¿La mejor manera de almacenar JS Regex capturando grupos en una matriz?
Exactamente lo que pide el título. Daré algunos ejemplos mientras explico mi pregunta.
Cadena de prueba:
var test = "#foo# #foo# bar #foo#";
Decir, quiero extraer todo el texto entre#
(todosfoo
s pero nobar
).
var matches = test.match(/#(.*?)#/g);
Utilizando.match
como se indicó anteriormente, almacenará todos los partidos, pero simplemente eliminará los grupos de captura que parece.
var matches2 = /#(.*?)#/g.exec(test);
los.exec
El método aparentemente devuelve solo la cadena coincidente del primer resultado en la posición0
de la matriz y mi único grupo de captura de ese partido en la posición1
.
He agotado SO, Google y MDN buscando una respuesta en vano.
Entonces, mi pregunta es, ¿hay alguna manera mejor de almacenar solo los grupos de captura emparejados que en bucle a través de ellos?.exec
y llamandoarray.push
para almacenar los grupos capturados?
Mi matriz esperada para la prueba anterior debería ser:
[0] => (string) foo
[1] => (string) foo
[2] => (string) foo
Se aceptan respuestas de Pure JS y jQuery, cookies adicionales si publica JSFiddle conconsole.log
. =]