JavaScriptでの正規表現のプロパティとマッチング結果
JavaScriptでの正規表現のプロパティとマッチング結果
- regexp.source
- regexp.lastIndex
- RegExp.$記号 (非推奨)
- RegExp.$n (非推奨)
- RegExp.lastMatch (非推奨)
- RegExp.leftContext (非推奨)
- RegExp.rightContext (非推奨)
- RegExp.lastParen (非推奨)
- RegExp.input (非推奨)
regexp.source
regexp.source
は、正規表現オブジェクトに設定された正規表現パターンの文字列を返します。このプロパティは読み取り専用で、正規表現の内容を確認したい場合に便利です。
例
// 正規表現を作成
const regex = /hello\s(world)/i;
console.log(regex.source); // "hello\s(world)"
上記のコードでは、正規表現のパターンhello\s(world)
がそのまま文字列として返されます。
regexp.lastIndex
regexp.lastIndex
は、正規表現でマッチングを再開する位置を示すプロパティです。このプロパティは主にglobal
フラグまたはsticky
フラグを使用している場合に役立ちます。
例
// globalフラグ付きの正規表現
const regex = /world/g;
const str = "hello world world";
regex.test(str);
console.log(regex.lastIndex); // 11 (最初のマッチの次の位置)
regex.test(str);
console.log(regex.lastIndex); // 17 (次のマッチの次の位置)
この例では、lastIndex
が更新され、次のマッチング位置を示します。
RegExp.$記号 (非推奨)
RegExp.$&
, RegExp.$`
, RegExp.$'
などのプロパティは、最新のマッチング結果に基づいて情報を提供しますが、非推奨となっています。
例
const regex = /(hello)\s(world)/;
regex.test("hello world");
console.log(RegExp.$&); // "hello world" (マッチ全体)
console.log(RegExp.$`); // "" (マッチ前の文字列)
console.log(RegExp.$'); // "" (マッチ後の文字列)
これらのプロパティは非推奨のため、代替としてString.prototype.match
を使用することが推奨されます。
RegExp.$n (非推奨)
RegExp.$1
, RegExp.$2
などのプロパティは、正規表現のキャプチャグループに対応する値を提供しますが、これも非推奨です。
例
const regex = /(hello)\s(world)/;
regex.test("hello world");
console.log(RegExp.$1); // "hello" (最初のキャプチャグループ)
console.log(RegExp.$2); // "world" (2番目のキャプチャグループ)
非推奨であるため、exec
やmatch
の利用