← 返回首页
RegExp.prototype[@@search]() - JavaScript | MDN

This page was translated from English by the community. Learn more and join the MDN Web Docs community.

View in English Always switch to English

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 и строкой.

In this article

Синтаксис

regexp[Symbol.search](str)

Параметры

str

String, являющийся объектом поиска.

Возвращаемое значение

integer

В случае успеха, [@@search]() вернёт индекс первого совпадения регулярного выражения внутри строки. В противном случае, он вернёт -1.

Описание

Этот метод вызывается внутреннее в String.prototype.search(). Например, два следующих примера вернут один и тот же результат.

js
"abc".search(/a/); /a/[Symbol.search]("abc");

Этот метод существует для настройки поведения поиска в подклассах RegExp.

Примеры

Прямой вызов

Этот метод можно использовать почти так же, как String.prototype.search(), за исключением другого this и другого порядка аргументов.

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

Используя @@search в подклассах

Подкласс RegExp может быть перезаписан с помощью метода [@@search]() для изменения поведения.

js
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%

Совместимость с браузерами

Enable JavaScript to view this browser compatibility table.

Смотрите также