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() メソッドを使用するのがおすすめです。
-
JavaScriptで正規表現をテスト・実行する方法|test()とexec()の使い方
JavaScriptでは、RegExpオブジェクトを使って正規表現を扱います。パターンが文字列にマッチするかどうかを確認するには test() メソッドを、実際にマッチした結果を取得するには exec() メソッドを使用します。この記事では、両者の違いと具体的な使い方をサンプルコード付きで解説します。 test()メソッドとexec()メソッドの違い test()メソッド: 正規表現パターンが文字列にマッチすれば true、マッチしなければ false を返すシンプルな真偽判定用メソッドです。 exec()メソッド: マッチした場合、マッチした部分文字列などを含む結果の配列を返します。マッチ
-
JavaScriptでプロパティにアクセスする3つの方法|ドット記法・角括弧・分割代入の使い分け
JavaScriptでオブジェクトのプロパティにアクセスする3つの方法 JavaScriptには、オブジェクトが持つプロパティ(キーと値のペア)を参照するための方法が主に3つあります。どれも同じ値を取得できますが、それぞれ特徴や向いている場面が異なるため、正しく使い分けられるとコードの可読性と保守性が大きく向上します。 ドット記法:object.property 角括弧記法:object[property] 分割代入:let {property} = object 1. ドット記法(object.property) 最もシンプルで読みやすい記法です。obj.a のようにピリオドでつなぐだけ