¿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# (todosfoos 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. =]

Respuestas a la pregunta(5)

Su respuesta a la pregunta