¿Por qué las subclases de Javascript dejan de funcionar cuando se establece el modificador g
?JavaScript expresiones regulares y subclases
var text = 'test test test test';
var result = text.match(/t(e)(s)t/);
// Result: ["test", "e", "s"]
lo anterior funciona bien, es result[1]
"e"
y result[2]
es "s"
.
var result = text.match(/t(e)(s)t/g);
// Result: ["test", "test", "test", "test"]
Lo anterior ignora mis grupos de captura. ¿La siguiente es la única solución válida?
var result = text.match(/test/g);
for (var i in result) {
console.log(result[i].match(/t(e)(s)t/));
}
/* Result:
["test", "e", "s"]
["test", "e", "s"]
["test", "e", "s"]
["test", "e", "s"]
*/
usando exec no parece escuchar el modificador g, pero admite subclases/grupos. Entonces, el resultado sería la primera coincidencia (básicamente ignora el modificador g) –
Agregó una aclaración al respecto: debe llamar a exec() repetidamente para obtener las coincidencias múltiples. – hbw
No es la solución más elegante. que estaba esperando una salida algo como esto: [ \t [ "prueba", "e", "s"], \t [ "prueba", "e", "s"], \t [" prueba "," e "," s "], \t [" prueba "," e "," s "] ] –