Veamos, tengo este código:
Código PHP:
String.prototype.localizar=function(expReg,modif) {
expReg=new RegExp(expReg ,modif);
//hacemos el match
var q=this.match(expReg);
//este sera el array con el que hagamos return
devolver=new Array();
//añadimos a devolver todos los elementos del match (todas las incidencias)
devolver[devolver.length]=q;
//por cada incidencia, añadimos a devolver su posicion
for(var a=0; a<q.length; a++) {
//en esta linea es en la que falla
var p=this.search(q[a]);
devolver[devolver.length]=p;
}
return devolver;
}
var query="estereococo".localizar("[^aeiou][aeiou]","gi");
document.write( query );
Cita:
En el matching se encuentra te-re-co-co. El penultimo "co" es estereococo, mientras que el ultimo es estereococo. Pero claro, el search no los diferencia, busca la primera incidencia de "co" en estereococo, y la primera vez lo hace según lo que quiero: devuelve la posicion 7. Pero la segunda vez debería devolver 9, porque el segundo "co" esta en la posición 9.te,re,co,co,2,4,7,7
¿Como puedo resolver esto? Sé que si en el search no utilizo expresiones regulares (como es el caso) es lo mismo que utilizar indexOf. indexOf tiene un segundo argumento que me ayudaría a determinarle desde dónde buscar, para que localize "co" desde la posición que yo quiero, pero no me ha salido.
¿A alguien se le ocurre como solventarlo?