Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

【JavaScript ECMAScript】RegExp::RegExp.leftContext ($`)静的アクセサプロパティの使い方

RegExp.leftContext ()静的アクセサプロパティの使い方について、初心者にもわかりやすく解説します。

作成日: 更新日:

基本的な使い方

RegExp.leftContext ($`)プロパティは、正規表現によるマッチング操作が成功した際に、マッチした文字列の左側にある部分全体を保持するプロパティです。

このプロパティは、RegExp.exec()String.prototype.match()など、正規表現を用いて文字列を検索・マッチングするメソッドが正常に実行された直後に、JavaScriptエンジンによって自動的に更新されます。例えば、文字列「hello world」を「world」という正規表現で検索した場合、「hello 」という部分がRegExp.leftContextに格納されます。

RegExp.leftContextは、特定の正規表現オブジェクトのインスタンスに紐付くのではなく、RegExpクラス自体に属する静的プロパティです。そのため、JavaScriptの実行環境全体でただ一つの値しか保持できません。一度設定された値は、次に正規表現のマッチング操作が成功すると、その新しい結果で上書きされます。

このプロパティは、同義である短縮形$を含め、JavaScriptの初期バージョンから存在しますが、現在はECMAScriptの仕様において非推奨とされています。現在のJavaScriptのコーディングでは、RegExp.prototype.exec()メソッドが返すマッチ結果オブジェクトのindexプロパティとinputプロパティを組み合わせて、同様のマッチ前文字列を取得する方法が推奨されます。これにより、グローバルな状態に依存しない、より予測可能で安全なコードを記述できます。

公式リファレンス: RegExp.leftContext ($`)

構文(syntax)

1"Hello JavaScript".match(/JavaScript/);
2console.log(RegExp.leftContext);

引数(parameters)

引数なし

引数はありません

戻り値(return)

String

RegExp.leftContext は、直前の RegExp.exec() または String.prototype.match() メソッドの実行において、マッチした部分文字列の直前にあった文字列全体を返します。

関連コンテンツ

関連プログラミング言語