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 Ні |