Ver Mensaje Individual
  #7 (permalink)  
Antiguo 20/09/2006, 14:03
frijolerou
 
Fecha de Ingreso: diciembre-2003
Mensajes: 1.583
Antigüedad: 20 años, 4 meses
Puntos: 13
crcbad:

Encontré un error en la solución que comenté, pero basta con hacer un par de cambios.

si escapamos dos veces el * dentro del Array, la siguiente línea incluiría uno de los backslashes:

Código:
'<font color="#669933">'+codVerde[i]+'</font>'
Lo que ha que hacer es un pequeño cambio en la expresión regular. Es decir, debemos armar grupos con los caracteres que quieres detectar. Entonces tu script debiera quedar así:

Código:
codVerde   = new Array("-\\*");
 
 for(i=0; i<codVerde.length;i++)
 {
  // el paréntesis se utliza para armar un grupo
  expReg = "/("+codVerde[i]+")/g";
  // $1 hace referencia al grupo generado en la expresión regular. como
// como generamos 1 solo grupo, nos referimos a él como $1
  objCod.innerHTML = objCod.innerHTML.replace(eval(expReg), '<font color="#669933">$1</font>');
 }
Cita:
e puede modificar eso de tal forma para que te cambie -* y todo el resto de la linea hasta que ser detecte un <br> o un \n ?
No hay problema, veamos. En el código anterior, la expresión regular estaba compuesta por un grupo (que contenía la subcadena -*). Ahora debemos armar 3 grupos:

1.- El primer grupo ($1) debe contener la subcadena inicial (-*)
2.- El tercer grupo ($3) debe contener la subcadena final (<br>).
3.- El segundo grupo ($2) debe contener todo el contenido que se encuentra entre el grupo 1 y el grupo 3.

La expresión regular quedaría así:

Código:
expReg = "/("+codVerde[i]+")([^<br>]*)(<br>)/g";
El primer grupo define la subcadena inicial, es decir -*
El tercer grupo define que la cadena debe finalizar en <br> (sorry, no me acuerdo como se hacía para incluir el salto de línea \n)
El segundo grupo define que el contenido intermedio entre el grupo y el grupo 3 debe contener cualquier caracter, excepto <br>.

Entonces la función replace quedaría así:

Código:
objCod.innerHTML = objCod.innerHTML.replace(eval(expReg), '<font color="#669933">$1$2$3</font>');