Вебсправочник
Справочник JavaScript

search(): позиция первого совпадения с регулярным выражением

Search возвращает позицию первого совпадения строки с шаблоном. Он подходит, когда нужен индекс начала найденного фрагмента, а не массив всех результатов.

Назначение

Search возвращает позицию первого совпадения строки с шаблоном. Он подходит, когда нужен индекс начала найденного фрагмента, а не массив всех результатов.

Как это работает

При отсутствии совпадения возвращается -1. Позиция ноль является успешным результатом, поэтому проверять только истинность числа нельзя. Флаг g не превращает search в поиск всех вхождений.

Пример

const text = "lesson 24: CSS";
console.assert(text.search(/\d+/) === 7);
console.assert(text.search(/^lesson/) === 0);
console.assert(text.search(/HTML/) === -1);
console.assert(text.search(/\d+/g) === 7);
console.log(text.search(/css/i));

Что должно получиться

Числовой фрагмент начинается с позиции 7, слово lesson — с нуля. Для отсутствующего HTML получается -1. Результаты относятся к индексам кодовых единиц строки, а не обязательно к визуальным символам.

Граница применения и частая ошибка

Переданная обычная строка может быть преобразована в регулярное выражение: точка тогда имеет специальное значение. Для буквального поиска часто проще indexOf или includes. Не создавайте регулярное выражение из произвольного ввода без подходящего экранирования и ограничений.

Самостоятельная проверка

Сравните search и indexOf для текста с точкой. Проверьте совпадение в начале и отсутствие результата. Напишите условие index >= 0 и объясните, почему if(index) ошибочно обрабатывает оба случая.

Пример JavaScript проверяйте в собственном учебном файле или консоли своего проекта. Встроенная песочница справочника JavaScript не выполняет. Успешное выполнение в одной среде не гарантирует поддержку метода во всех браузерах.

Самостоятельный учебный материал. Техническая документация: первоисточник по теме ↗. Если результат отличается, проверьте код и версию браузера.