【JavaScript ECMAScript】RegExp::RegExp.prototype.hasIndicesインスタンスアクセサプロパティの使い方
RegExp.prototype.hasIndicesインスタンスアクセサプロパティの使い方について、初心者にもわかりやすく解説します。
基本的な使い方
RegExp.prototype.hasIndicesプロパティは、特定の正規表現インスタンスがd(hasIndices)フラグを持っているかどうかを示すブール値を保持するプロパティです。このプロパティは読み取り専用であり、正規表現が作成されたときにその正規表現リテラルやRegExpコンストラクタのオプションに基づいて設定されます。
dフラグは、ECMAScript 2022で導入された正規表現の機能で、正規表現のマッチング結果に、マッチした部分文字列の開始位置と終了位置に関するインデックス情報を含めるように指定します。通常、正規表現のマッチ結果はマッチした文字列そのものを返しますが、dフラグが有効な場合、match()やexec()、matchAll()などのメソッドが返す結果オブジェクトや配列に、indicesプロパティが追加されます。このindicesプロパティは、マッチ全体および各キャプチャグループが入力文字列のどのインデックス範囲に存在するのかを、[開始インデックス, 終了インデックス)の形式で数値のペアとして提供します。
たとえば、ある文字列から特定のパターンを見つけ出した際、その見つけ出した部分が文字列全体のどこからどこまでなのかを正確に知りたい場合に、このインデックス情報は非常に役立ちます。文字列の特定の部分を置き換えたり、特定のルールに基づいてその部分にスタイルを適用したり、ユーザーインターフェースでハイライト表示したりする際に、マッチした部分の正確な位置を効率的に特定できるようになります。hasIndicesプロパティを参照することで、正規表現が詳細なインデックス情報を提供できる状態にあるかどうかをプログラム的に確認し、その情報を活用した処理を記述することが可能です。
構文(syntax)
1const regex = /pattern/d; 2// regex.hasIndices は正規表現に 'd' フラグが含まれているかを示します。 3// 上記の例では 'd' フラグがあるので true です。
引数(parameters)
引数なし
引数はありません
戻り値(return)
boolean
このプロパティは、正規表現がマッチした文字列の開始位置と終了位置を示すインデックスを返すかどうかを示す真偽値を返します。true の場合はインデックスが返され、false の場合は返されません。