String.prototype.search()
Метод search()
(шукати) значень String
виконує пошук збігу між регулярним виразом та своїм рядком, повертаючи індекс першого знайденого у своєму рядку збігу.
Спробуйте його в дії
Синтаксис
search(regexp)
Параметри
regexp
Об'єкт регулярного виразу, або будь-який інший об'єкт, що має метод
Symbol.search
.Якщо параметр
regexp
не є об'єктомRegExp
і не має методуSymbol.search
, то він неявно перетворюється наRegExp
за допомогоюnew RegExp(regexp)
.
Повернене значення
Індекс першого збігу вмісту рядка з регулярним виразом, або -1
— якщо збігу знайдено не було.
Опис
Реалізація String.prototype.search()
сама по собі є дуже простою: вона лишень викликає метод Symbol.search
переданого аргументу зі своїм рядком як першим параметром. Фактична реалізація надходить з RegExp.prototype[Symbol.search]()
.
Позначка g
виразу regexp
не впливає на результат search()
, і пошук завжди відбувається так, ніби властивість lastIndex
регулярного виразу має значення 0
. Більше інформації про логіку search()
дивіться на сторінці RegExp.prototype[Symbol.search]()
.
Коли треба знати, чи був знайдений патерн, а також індекс збігу в рядку, слід використовувати search()
.
- Якщо треба знати лише те, чи збіг існує, слід використовувати метод
test()
, який повертає булеве значення. - Якщо потрібен сам текст, що дає збіг, слід використовувати
String.prototype.match()
абоRegExp.prototype.exec()
.
Приклади
Застосування методу search()
Наступний приклад шукає збіг з двома різними регулярними виразами для ілюстрації різниці між успішним пошуком (додатне значення) та неуспішним (-1
)
const str = "hey JudE";
const re = /[A-Z]/;
const reDot = /[.]/;
console.log(str.search(re)); // повертає значення 4 — індекс першої великої літери "J"
console.log(str.search(reDot)); // повертає -1 — не може знайти розділовий знак '.'
Специфікації
Сумісність із браузерами
desktop | mobile | server | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
search
|
Chrome Full support 1 | Edge Full support 12 | Firefox Full support 1 | Internet Explorer Full support 4 | Opera Full support 4 | Safari Full support 1 | WebView Android Full support 1 | Chrome Android Full support 18 | Firefox for Android Full support 4 | Opera Android Full support 10.1 | Safari on iOS Full support 1 | Samsung Internet Full support 1.0 | Deno Full support 1.0 | Node.js Full support 0.10.0 |
flags
|
Chrome No support Ні | Edge No support Ні | Firefox No support 1 – 49 | Internet Explorer No support Ні | Opera No support Ні | Safari No support Ні | WebView Android No support Ні | Chrome Android No support Ні | Firefox for Android No support 4 – 49 | Opera Android No support Ні | Safari on iOS No support Ні | Samsung Internet No support Ні | Deno No support Ні | Node.js No support Ні |