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#
(allesfoo
s 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
. =]