まさにタイトルが求めるもの。私の質問を説明しながら、いくつかの例を示します。
テスト文字列:
var test = "#foo# #foo# bar #foo#";
たとえば、間のすべてのテキストを抽出したいとします#
(すべてfoo
の s ではない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 の回答が受け入れられます。追加の Cookie は、JSFiddle をconsole.log
. =]