JavaScript
 Computer >> コンピューター >  >> プログラミング >> JavaScript

JavaScriptの正規表現で一致したグループ(キャプチャグループ)にアクセスする方法

JavaScriptの正規表現では、exec()メソッドなどを使うことで、パターンに一致した文字列から、括弧()で囲まれた「キャプチャグループ」の内容を取得できます。

以下は、正規表現で一致したグループにアクセスするサンプルコードです。

サンプルコード

<html>
   <head>
      <script>
         var str = "Username akdg_amit";
         var myReg = /(?:^|\s)akdg_(.*?)(?:\s|$)/g;

         var res = myReg.exec(str);

         document.write(res[1]);
      </script>
   </head>
   <body>
   </body>
</html>

実行結果

amit

コードの解説

exec()メソッドは、一致が見つかった場合に配列形式の結果を返します。この配列には以下のような情報が格納されます。

  • res[0]: パターン全体に一致した文字列
  • res[1]: 1番目のキャプチャグループに一致した部分(上記の例では amit
  • res[2]以降: 2番目以降のキャプチャグループ(存在する場合)
  • index / input: 一致位置のインデックスと元の文字列

正規表現パターンのポイント

  • (?:^|\s) のように ?: を付けたものは非キャプチャグループと呼ばれ、一致の判定には使われますが、結果の配列には格納されません。
  • (.*?) が実際のキャプチャグループであり、akdg_ の直後に続く任意の文字列を最小限のマッチで取得します。
  • 末尾の g フラグ(グローバルフラグ)を付けている場合、exec() を繰り返し呼び出すことで、複数の一致箇所を順番に取り出すことができます。

補足:match()メソッドとの違い

str.match(regex) メソッドでも同様に一致を取得できますが、グローバルフラグ g が付いている場合はキャプチャグループが返されず、一致した文字列のみの配列が返る点に注意してください。キャプチャグループを確実に取得したい場合は、exec() メソッドを使用するのがおすすめです。

  1. JavaScriptで正規表現をテスト・実行する方法|test()とexec()の使い方

    JavaScriptでは、RegExpオブジェクトを使って正規表現を扱います。パターンが文字列にマッチするかどうかを確認するには test() メソッドを、実際にマッチした結果を取得するには exec() メソッドを使用します。この記事では、両者の違いと具体的な使い方をサンプルコード付きで解説します。 test()メソッドとexec()メソッドの違い test()メソッド: 正規表現パターンが文字列にマッチすれば true、マッチしなければ false を返すシンプルな真偽判定用メソッドです。 exec()メソッド: マッチした場合、マッチした部分文字列などを含む結果の配列を返します。マッチ

  2. JavaScriptでプロパティにアクセスする3つの方法|ドット記法・角括弧・分割代入の使い分け

    JavaScriptでオブジェクトのプロパティにアクセスする3つの方法 JavaScriptには、オブジェクトが持つプロパティ(キーと値のペア)を参照するための方法が主に3つあります。どれも同じ値を取得できますが、それぞれ特徴や向いている場面が異なるため、正しく使い分けられるとコードの可読性と保守性が大きく向上します。 ドット記法:object.property 角括弧記法:object[property] 分割代入:let {property} = object 1. ドット記法(object.property) 最もシンプルで読みやすい記法です。obj.a のようにピリオドでつなぐだけ