2012-03-20 13 views
7

estoy usando una expresión regular: pattern=/([a-zA-Z0-9_\.].*?)=(.*?);/g; que tiene más de una coincidencia en el texto que uso. Ahora quiero el contenido que está después de "=". Usé RegExp.$2 pero solo da un valor. Ayúdenme a obtener el valor después de "=" en todas las coincidencias disponibles.Grupos de expresiones regulares para varias coincidencias en javascript

+0

¿Cómo estás usando la expresión regular? – gilly3

+0

pattern.exec (script_txt); – user1275375

Respuesta

9

Tienes que iterar a través de los partidos en un bucle while:

var match = null; 
while (match = pattern.exec(script_txt)) { 
    // Do something with match[2] 
} 
+0

También funciona con RegExp. $ 2 Gracias – user1275375

+1

Ok, esto es increíble. ¿Podrías explicar por qué funciona? Había visto esta técnica utilizada aquí antes, pero luego no pude volver a encontrarla más tarde. Revisé algunos documentos y no pude encontrar nada. ¿Por qué obtienes diferentes resultados de la misma llamada de método con los mismos datos? ¿Funciona solo en el ciclo 'while'? – gilly3

+2

De la ['exec' documentation] (http://msdn.microsoft.com/en-us/library/windows/apps/z908hy33 (v = vs.94) .aspx): Si el método' exec' doesn ' t encuentra una coincidencia, devuelve NULL (esta es la razón por la que se puede poner en un bucle 'while'). Si encuentra una coincidencia, devuelve una matriz ... y modifica el objeto global 'RegExp'. ** Si la bandera global está configurada para una expresión regular, 'exec' busca la cadena que comienza en la posición indicada por el valor de' lastIndex' **. Si la bandera global no está configurada, 'exec' ... busca desde el comienzo de la cadena. –

Cuestiones relacionadas