Najlepszy sposób na przechowywanie grup przechwytujących JS Regex w macierzy?
Dokładnie o jaki tytuł chodzi. Podam kilka przykładów, wyjaśniając moje pytanie.
Ciąg testowy:
var test = "#foo# #foo# bar #foo#";
Powiedz, chcę wyodrębnić cały tekst między#
(wszystkofoo
s ale niebar
).
var matches = test.match(/#(.*?)#/g);
Za pomocą.match
jak powyżej, zapisze wszystkie mecze, ale po prostu wyrzuci grupy przechwytujące, jak się wydaje.
var matches2 = /#(.*?)#/g.exec(test);
The.exec
metoda najwyraźniej zwraca tylko dopasowany ciąg pierwszego wyniku w pozycji0
tablicy i moja jedyna grupa przechwytująca tego meczu w tej pozycji1
.
Wyczerpałem SO, Google i MDN szukając odpowiedzi bezskutecznie.
Tak więc moje pytanie brzmi, czy jest lepszy sposób na przechowywanie tylko dopasowanych grup przechwytujących niż zapętlenie.exec
i wołaniearray.push
przechowywać przechwycone grupy?
Moja oczekiwana tablica dla powyższego testu powinna być:
[0] => (string) foo
[1] => (string) foo
[2] => (string) foo
Czyste odpowiedzi JS i jQuery są akceptowane, dodatkowe pliki cookie, jeśli wysyłasz JSFiddleconsole.log
. =]