g
修飾子が設定されているとJavascriptのサブマッチが機能しなくなるのはなぜですか?JavaScript正規表現とサブマッチ
var text = 'test test test test';
var result = text.match(/t(e)(s)t/);
// Result: ["test", "e", "s"]
上記作品罰金、result[1]
は"e"
あるとresult[2]
は"s"
です。
var result = text.match(/t(e)(s)t/g);
// Result: ["test", "test", "test", "test"]
上記のキャプチャグループは無視されます。次は唯一の有効なソリューションですか?グローバル修飾子が設定されている場合、あなたが見つけたとしてString
のmatch()
機能を使用して
var result = text.match(/test/g);
for (var i in result) {
console.log(result[i].match(/t(e)(s)t/));
}
/* Result:
["test", "e", "s"]
["test", "e", "s"]
["test", "e", "s"]
["test", "e", "s"]
*/
execを使用するとg修飾子をリッスンしないようですが、サブマッチ/グループがサポートされます。結果は最初の一致になります(基本的にg修飾子は無視されます)。 –
これについての説明が追加されました。複数の一致を得るためにexec()を繰り返し呼び出さなければなりません。 – hbw
最も洗練されたソリューションではありません。 は私はこのような多少出力を期待していた。 [ \t [ "テスト"、 "E"、 "S"]、 \t [ "テスト"、 "E"、 "S"]、 \t [」 \t ["test"、 "e"、 "s"] ] –