RegExp.prototype[@@search]()
Baseline
Widely available
This feature is well established and works across many devices and browser versions. Itâs been available across browsers since ÑенÑÑбÑÑ 2016 г..
ÐеÑод [@@search]() вÑполнÑÐµÑ Ð¿Ð¾Ð¸Ñк ÑÐ¾Ð²Ð¿Ð°Ð´ÐµÐ½Ð¸Ñ Ð¼ÐµÐ¶Ð´Ñ ÑегÑлÑÑнÑм вÑÑажением this и ÑÑÑокой.
СинÑакÑиÑ
regexp[Symbol.search](str)
ÐаÑамеÑÑÑ
ÐозвÑаÑаемое знаÑение
- integer
-
Ð ÑлÑÑае ÑÑÐ¿ÐµÑ Ð°,
[@@search]()веÑнÑÑ Ð¸Ð½Ð´ÐµÐºÑ Ð¿ÐµÑвого ÑÐ¾Ð²Ð¿Ð°Ð´ÐµÐ½Ð¸Ñ ÑегÑлÑÑного вÑÑÐ°Ð¶ÐµÐ½Ð¸Ñ Ð²Ð½ÑÑÑи ÑÑÑоки. РпÑоÑивном ÑлÑÑае, он веÑнÑÑ -1.
ÐпиÑание
ÐÑÐ¾Ñ Ð¼ÐµÑод вÑзÑваеÑÑÑ Ð²Ð½ÑÑÑеннее в String.prototype.search(). ÐапÑимеÑ, два ÑледÑÑÑиÑ
пÑимеÑа веÑнÑÑ Ð¾Ð´Ð¸Ð½ и ÑÐ¾Ñ Ð¶Ðµ ÑезÑлÑÑаÑ.
"abc".search(/a/);
/a/[Symbol.search]("abc");
ÐÑÐ¾Ñ Ð¼ÐµÑод ÑÑÑеÑÑвÑÐµÑ Ð´Ð»Ñ Ð½Ð°ÑÑÑойки Ð¿Ð¾Ð²ÐµÐ´ÐµÐ½Ð¸Ñ Ð¿Ð¾Ð¸Ñка в подклаÑÑаÑ
RegExp.
ÐÑимеÑÑ
>ÐÑÑмой вÑзов
ÐÑÐ¾Ñ Ð¼ÐµÑод можно иÑполÑзоваÑÑ Ð¿Ð¾ÑÑи Ñак же, как String.prototype.search(), за иÑклÑÑением дÑÑгого this и дÑÑгого поÑÑдка аÑгÑменÑов.
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 calls re[@@search].
console.log(result); // 3
СпеÑиÑикаÑии
| Specification |
|---|
| ECMAScript® 2027 Language Specification> # sec-regexp.prototype-%symbol.search%> |