Ver Mensaje Individual
  #2 (permalink)  
Antiguo 23/08/2012, 00:50
Avatar de zerokilled
zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años
Puntos: 1485
Respuesta: como saber en que posicion encontro la palabra en la funcion Match? de jav

buenas...
no creo que match sea tu mejor aliado para este caso debido a la forma como funciona. para obtener la posición ‒ o índice ‒ de la coincidencia con match, el patrón no puede ser global. pero entonces, si el patrón no es global, solo obtienes la primera coincidencia, no importa cuantas veces lo invoques.
Código:
// en este ejemplo voy a usar variables para demostrar que los estados no se mantienen ;
var txt = "texto_nµ€þø";
var regex = /\W/;
var match01 = txt.match(regex);
var match02 = txt.match(regex);
si exploras en una consola las variables match01 y match02, ambas tienen el mismo resultado: un array de un solo elemento con el símbolo micro ‒ µ ‒, y una propiedad adicional que indica la posición de la coincidencia — index — con el valor siete. si intentas el mismo ejemplo pero con un patrón global /\W/g, las variables representarían un array de cuatro elementos: µ, €, þ, ø. a diferencia del anterior, esta vez no tiene la propiedad index, por tanto es imposible saber las posiciones.

en este caso, tu mejor aliado es el método exec de las expresiones regulares. exec, además de informarte de la posición, te permite ir coincidencia por coincidencia en pasos. adaptando el ejemplo anterior:

Código:
var txt = "texto_nµ€þø", regex = /\W/g, match;
while(match = regex.exec(txt)) console.log(match.index);
// en consola se imprime: 7, 8, 9, 10
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.