Метод [@@search]()
выполняет поиск совпадения между регулярным выражением this
и строкой.
Синтаксис
regexp[Symbol.search](str)
Параметры
str
String
, являющийся объектом поиска.
Возвращаемое значение
- 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
Спецификации
Спецификация | Статус | Комментарий |
---|---|---|
ECMAScript 2015 (6th Edition, ECMA-262) Определение 'RegExp.prototype[@@search]' в этой спецификации. |
Стандарт | Изначальное определение. |
ECMAScript (ECMA-262) Определение 'RegExp.prototype[@@search]' в этой спецификации. |
Живой стандарт |
Совместимость с браузерами
BCD tables only load in the browser