【JavaScript ECMAScript】RegExp::RegExp.prototype[Symbol.search]インスタンスメソッドの使い方
RegExp.prototype[Symbol.search]()インスタンスメソッドの使い方について、初心者にもわかりやすく解説します。
基本的な使い方
RegExp.prototypeSymbol.searchメソッドは、RegExpインスタンスが文字列内で正規表現パターンを検索する際の挙動を定義するメソッドです。このメソッドは、String.prototype.search()メソッドに正規表現オブジェクトが引数として渡されたときに、JavaScriptエンジンによって内部的に呼び出されます。
具体的な処理としては、呼び出し元のRegExpオブジェクトが持つ正規表現パターンを使用して、引数として渡された文字列内を検索します。そして、パターンに最初に一致する部分が見つかった場合、その一致が見つかった文字列の先頭インデックス(0から始まる位置)を数値として返します。もし文字列内でパターンに一致する部分が全く見つからなかった場合は、-1を返します。
このメソッドの重要な特性として、RegExp.prototype.exec()やRegExp.prototype.test()とは異なり、検索後も正規表現オブジェクトのlastIndexプロパティの値を更新しない点が挙げられます。また、正規表現にg(グローバル)フラグが指定されていたとしても、常に最初に見つかったマッチの位置のみを返し、複数のマッチをすべて検索することはありません。
主にString.prototype.search()を利用する際に、正規表現がどのように動作するかを理解するために知っておくと良い内部的な仕組みの一部です。このメソッドを直接呼び出す機会は少ないですが、String.prototype.search()が期待通りに機能しない場合のデバッグや、より高度な正規表現のカスタマイズを検討する際に役立つ情報となります。
構文(syntax)
1const regex = /pattern/; 2const targetString = "example string with pattern"; 3const matchIndex = regex[Symbol.search](targetString);
引数(parameters)
str
- str: string: 検索対象の文字列
戻り値(return)
number
対象の文字列内で正規表現に最初に一致した位置のインデックスを返します。一致しない場合は -1 を返します。