--- title: 'RegExp.prototype[@@search]()' slug: Web/JavaScript/Reference/Global_Objects/RegExp/@@search tags: - JavaScript - Prototype - Reference - RegExp - метод - регулярные выражения translation_of: Web/JavaScript/Reference/Global_Objects/RegExp/@@search ---
Метод [@@search]()
выполняет поиск совпадения между регулярным выражением this
и строкой.
regexp[Symbol.search](str)
str
[@@search]()
вернёт индекс первого совпадения регулярного выражения внутри строки. В противном случае, он вернёт -1.Этот метод вызывается внутреннее в {{jsxref("String.prototype.search()")}}. Например, два следующих примера вернут один и тот же результат.
'abc'.search(/a/); /a/[Symbol.search]('abc');
Этот метод существует для настройки поведения поиска в подклассах RegExp
.
Этот метод можно использовать почти так же, как {{jsxref("String.prototype.search()")}}, за исключением другого this
и другого порядка аргументов.
var re = /-/g; var str = '2016-01-02'; var result = re[Symbol.search](str); console.log(result); // 4
@@search
в подклассахПодкласс {{jsxref("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
Спецификация | Статус | Комментарий |
---|---|---|
{{SpecName('ES6', '#sec-regexp.prototype-@@search', 'RegExp.prototype[@@search]')}} | {{Spec2('ES6')}} | Изначальное определение. |
{{SpecName('ESDraft', '#sec-regexp.prototype-@@search', 'RegExp.prototype[@@search]')}} | {{Spec2('ESDraft')}} |
{{Compat("javascript.builtins.RegExp.@@search")}}