MDN’s new design is in Beta! A sneak peek: https://blog.mozilla.org/opendesign/mdns-new-design-beta/

RegExp.prototype[@@search]()

[@@search]() メソッドは、this 正規表現と文字列の間でマッチさせるための検索を実行します。

構文

regexp[Symbol.search](str)

パラメーター

str
検索対象の String

戻り値

integer
成功した場合、[@@search]() は文字列内で正規表現に最初に一致したインデックスを返す。そうではない場合、-1 を返す。

説明

このメソッドは、String.prototype.search() の内部で呼び出されます。たとえば、次の 2 つの例は同じ結果を返します。

'abc'.search(/a/);

/a/[Symbol.search]('abc');

このメソッドは、RegExp サブクラスで検索動作をカスタマイズするために存在しています。

直接呼出し

このメソッドは、this と引数順が異なることを除いて String.prototype.search() とほぼ同じ方法で使用できます。

var re = /-/g;
var str = '2016-01-02';
var result = re[Symbol.search](str);
console.log(result);  // 4

サブクラスで @@search を使用する

RegExp のサブクラスは、動作を修正するために [@@search]() メソッドをオーバーライドできます。

class MyRegExp extends RegExp {
  constructor(str) {
    super(str)
    this.pattern = str;
  }
  [Symbol.search](str) {
    return str.indexOf(this.pattern);
  }
}

var re = new MyRegExp('a+b');
var str = 'ab a+b';
var result = str.search(re); // String.prototype.search は再定義した [@@search] を呼び出す。
console.log(result); // 3

仕様

仕様 状態 コメント
ECMAScript 2015 (6th Edition, ECMA-262)
RegExp.prototype[@@search] の定義
標準 初期定義。
ECMAScript 2017 Draft (ECMA-262)
RegExp.prototype[@@search] の定義
ドラフト  

ブラウザ実装状況

機能 Chrome Firefox (Gecko) Internet Explorer Opera Safari
基本サポート ? 48 (48) ? ? ?
機能 Android Chrome for Android Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
基本サポート ? ? 48.0 (48) ? ? ?

関連項目

ドキュメントのタグと貢献者

 このページの貢献者: YuichiNukiyama
 最終更新者: YuichiNukiyama,