JavaScript 正規表現で一致したグループへのアクセス
文字列を正規表現と照合する場合、キャプチャされたサブグループを取得する方法を理解することが重要です。 JavaScript では、これは正規表現内のキャプチャ グループを使用して実現されます。
次の例を考えてみましょう:
var myString = "something format_abc"; // Target substring: "abc" var arr = /(?:^|\s)format_(.*?)(?:\s|$)/.exec(myString); console.log(arr); // [" format_abc", "abc"] console.log(arr[1]); // undefined console.log(arr[0]); // format_undefined
未定義の出力の理由:
正規表現は部分文字列「abc」と正しく一致しますが、arr[1] にアクセスすると、console.log ステートメントでの出力が正しくないため、unknown が返されます。 console.log は、文字列 %A を書式設定プレースホルダーとして解釈し、2 番目のパラメーター (この場合は未定義) で置き換えようとします。
一致したグループへのアクセス:
一致したグループを抽出するには、arr[1] を使用します。これは正しく「abc」を返します。
複数の一致の反復 (ES2020):
JavaScript 2020 では、matchAll メソッドが導入されました。これは、次の目的で使用できる反復子を生成します。文字列内のすべての一致を反復処理します。
const string = "something format_abc"; const regexp = /(?:^|\s)format_(.*?)(?:\s|$)/g; const matches = string.matchAll(regexp); for (const match of matches) { console.log(match); console.log(match.index); }
このアプローチは、よりクリーンで、複数の一致を処理するためのより直感的な方法。
以上がJavaScript 正規表現でキャプチャされたサブグループにアクセスするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。