ホームページ  >  記事  >  ウェブフロントエンド  >  JavaScript 正規表現でグループの複数の出現をキャプチャする方法?

JavaScript 正規表現でグループの複数の出現をキャプチャする方法?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-11-11 03:16:03402ブラウズ

How to Capture Multiple Occurrences of a Group in JavaScript Regex?

JavaScript Regex での任意のグループのキャプチャ

正規表現を使用してグループをキャプチャする場合、特定のパターンによって課される制限を理解することが重要です。繰り返しキャプチャ グループを使用して複数の出現を一致させることはできますが、JavaScript では最後のキャプチャのみが保持されます。

次の例を考えてみましょう。

"foo bar baz".match(/^(\s*\w+)+$/)

このパターンでは、キャプチャ グループ (s *w ) は量指定子を使用して繰り返されます。ただし、JavaScript の正規表現エンジンは、中間の一致ではなく、最後の出現のみをキャプチャします。その結果、出力は次のようになります:

["foo bar baz", " baz"]

キャプチャされた一致をすべて取得するには、次の戦略を検討してください:

区切り文字で分割:
可能であれば、複雑な正規表現を使用するのではなく、事前定義された区切り文字で文字列を分割します。

繰り返しグループを使用した実行ループ:
繰り返しグループをキャプチャするパターンを作成し、実行ループを使用して一致を繰り返します。完全なグループを取得したら、内側の区切り文字で分割します。

マルチレベル マッチング:
繰り返されるグループを 1 つのパターンで取得し、次を使用することで問題を複数の段階に分割します。個々の一致を抽出する後続のパターン。

例:

文字列 を一致させて分割するには、次のパターンを使用します:

/<(\w+(;\w+)*)>/g

このパターンは、グループ 1 の繰り返しグループ全体をキャプチャします。次に、実行ループで、; を使用してキャプチャされた文字列を分割します。区切り文字。

var text = "a;b;;g;h;i;;j;k;";

var r = /<(\w+(;\w+)*)>/g;

var match;
while ((match = r.exec(text)) != null) {
  console.log(match[1].split(";"));
}

出力:

["c", "d", "e", "f"]
["xx", "yy", "zz"]

以上がJavaScript 正規表現でグループの複数の出現をキャプチャする方法?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。