2009-08-03 14 views
19

Aquí es el caso: Quiero encontrar los elementos que coinciden con la expresión regular ...¿Cómo se repiten todos los elementos que coinciden con la expresión regular?

targetText = "SomeT1extSomeT2extSomeT3extSomeT4extSomeT5extSomeT6ext"

y utilizo la expresión regular en javascript como esto

reg = new RegExp(/e(.*?)e/g); 
var result = reg.exec(targetText); 

y solo recibo el primero, pero no el siguiente ... Puedo obtener el T1 solamente, pero no T2, T3 ... ...

+2

¿Alguien puede sugerir una forma de bucle para hacerlo? – DNB5brims

Respuesta

34
var reg = /e(.*?)e/g; 
var result; 
while((result = reg.exec(targetText)) !== null) { 
    doSomethingWith(result); 
} 
+13

En lugar de usar RegExp nuevo y luego conectar una expresión regular, simplemente haga 'reg =/e (. *>) E/g;' El uso del nuevo operador es redundante a menos que lo esté alimentando con una cadena. También asegúrese de marcar esto con el indicador global (/ g) o puede terminar en un bucle infinito. – Frug

+4

Tenga en cuenta que la expresión regular se debe asignar a un objeto antes de usarlo de esta manera: '/ e (. *?) E/.exec (...)' dará un ciclo infinito. – ARM

+0

Tengo bucle infinito para document.body.innerHTML –

2
targetText = "SomeT1extSomeT2extSomeT3extSomeT4extSomeT5extSomeT6ext"  
reg = new RegExp(/e(.*?)e/g); 
var result; 
while (result = reg.exec(targetText)) 
{ 
    ... 
} 
9

Trate de usar match() en la cadena en lugar de exec(), aunque se puede bucle con el ejecutivo también. Match debería darle todos los partidos de una vez. Creo que también puedes omitir el especificador global.

reg = new RegExp(/e(.*?)e/); 
var matches = targetText.match(reg); 
+6

No hacer un enlace a w3schools. No están afiliados al W3C y tienen mucha información incorrecta. Ver http://w3fools.com. – dbkaplun

+2

@MindVirus: si se molesta en comprobar, han limpiado muchas de las cosas que señaló w3fools.com. Todavía los uso como un recurso rápido, aunque no definitivo. Al igual que uno podría usar una hoja de trucos sobre K & R C para buscar algo simple. – tvanfosson

+1

Como desarrollador intermedio, ya he encontrado una buena media docena de errores claros en w3schools. Están fuera de mi lista de fiestas. –

Cuestiones relacionadas