Der beste Weg, um JS Regex-Erfassungsgruppen in einem Array zu speichern?

Genau das, wonach der Titel fragt. Ich werde einige Beispiele anführen, während ich meine Frage erkläre.

Teststring:

var test = "#foo# #foo# bar #foo#";

Angenommen, ich möchte den gesamten Text dazwischen extrahieren# (allesfoos aber nichtbar).

var matches = test.match(/#(.*?)#/g);

Verwenden.match Wie oben werden alle Übereinstimmungen gespeichert, aber die Erfassungsgruppen werden einfach weggeworfen, wie es scheint.

var matches2 = /#(.*?)#/g.exec(test);

Das.exec method gibt anscheinend nur den übereinstimmenden String des ersten Ergebnisses an der Position zurück0 des Arrays und meine einzige Erfassungsgruppe davon stimmen in der Position überein1.

Ich habe so erschöpft, Google und MDN auf der Suche nach einer vergeblichen Antwort.

Meine Frage ist also, ob es eine bessere Möglichkeit gibt, nur die übereinstimmenden Erfassungsgruppen zu speichern, als sie mit einer Schleife zu durchlaufen.exec und anrufenarray.push die erfassten Gruppen speichern?

Mein erwartetes Array für den obigen Test sollte sein:

 [0] => (string) foo
 [1] => (string) foo
 [2] => (string) foo

Reine JS- und jQuery-Antworten werden akzeptiert, zusätzliche Cookies, wenn Sie JSFiddle mit postenconsole.log. =]

Antworten auf die Frage(5)

Ihre Antwort auf die Frage