Лучший способ хранить группы захвата JS Regex в массиве?
Именно то, что просит название. Я приведу несколько примеров при объяснении моего вопроса.
Тестовая строка:
var test = "#foo# #foo# bar #foo#";
Скажем, я хочу извлечь весь текст между#
(всеfoo
с но неbar
).
var matches = test.match(/#(.*?)#/g);
С помощью.match
как указано выше, он будет хранить все совпадения, но он просто выбрасывает группы захвата, которые ему кажутся.
var matches2 = /#(.*?)#/g.exec(test);
.exec
метод, по-видимому, возвращает только первую строку, соответствующую совпадению результата в позиции0
массива и моя единственная группа захвата этого совпадения в позиции1
.
Я исчерпал SO, Google и MDN, но поиск ответа не дал результатов.
Итак, мой вопрос, есть ли лучший способ хранить только совпадающие группы захвата, чем перебирать его с помощью.exec
и звонитarray.push
хранить захваченные группы?
Мой ожидаемый массив для теста выше должен быть:
[0] => (string) foo
[1] => (string) foo
[2] => (string) foo
Чистые JS и JQuery ответы принимаются, дополнительные куки, если вы публикуете JSFiddle сconsole.log
. =]