この記事は編集レビューを必要としています。ぜひご協力ください。
[@@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) | ? | ? | ? |