JavaScript Строковый поиск
JavaScript методы для поиска строк:
- String.indexOf()
- String.lastindexOf()
- String.startsWith()
- String.endsWith()
String.indexOf()
Метод indexOf()
возвращает индекс (позицию) first
(первого) вхождения указанного текста в строку:
Пример
let str = "Пожалуйста, найдите, где встречается слово 'locate'!";
str.indexOf("locate") // Возвращает 7
Попробуйте сами »
JavaScript считает позиции с нуля.
0 - первая позиция в строке, 1 - вторая, 2 - третья и т.д.
String.lastIndexOf()
Метод lastIndexOf()
возвращает индекс last (последнего) вхождения указанного текста в строку:
Пример
let str = "Пожалуйста, найдите, где встречается слово 'locate'!";
str.lastIndexOf("locate") // Возвращает 21
Попробуйте сами »
Оба indexOf()
и lastIndexOf()
возвращают -1, если текст не найден:
Пример
let str = "Пожалуйста, найдите, где встречается слово 'locate'!";
str.lastIndexOf("John") // Возвращает -1
Попробуйте сами »
Оба метода принимают второй параметр в качестве начальной позиции для поиска:
Пример
let str = "Пожалуйста, найдите, где встречается слово 'locate'!";
str.indexOf("locate", 15) // Возвращает 21
Попробуйте сами »
Методы lastIndexOf()
выполняют поиск в обратном направлении (от конца к началу), что означает: если второй параметр равен 15
, поиск начинается с позиции 15 и до начала строки.
Пример
let str = "Пожалуйста, найдите, где встречается слово 'locate'!";
str.lastIndexOf("locate", 15) // Возвращает 7
Попробуйте сами »
String.search()
Метод search()
ищет строку для указанного значения и возвращает позицию совпадения:
Пример
let str = "Пожалуйста, найдите, где встречается слово 'locate'!";
str.search("locate") // Возвращает 7
Попробуйте сами »
Вы заметили?
Оба метода, indexOf()
и search()
, равнозначны?
Они принимают одни и те же аргументы (параметры) и возвращают одно и то же значение?
Эти два метода НЕ РАВНОЗНАЧНЫ. Вот отличия:
- Метод
search()
не может принимать второй аргумент начальной позиции; - Метод
indexOf()
не может принимать большие поисковые значения (регулярные выражения).
Вы узнаете больше о регулярных выражениях в следующей главе.
String.match()
Метод match()
ищет в строке совпадение с регулярным выражением и возвращает совпадения в виде объекта Array (массив).
Пример 1
Искать в строке "ain":
let text = "The rain in SPAIN stays mainly in the plain";
text.match(/ain/g) // Возвращает массив [ain,ain,ain]
Попробуйте сами »
Подробнее о регулярных выражениях читайте в главе JS RegExp.
Если регулярное выражение не включает модификатор g (для выполнения глобального поиска), метод match()
вернёт только первое совпадение в строке.
Синтаксис
string.match(regexp)
regexp | Обязательно. Значение для поиска в виде регулярного выражения |
Возвращает: | Массив, содержащий совпадения, по одному элементу для каждого совпадения или null, если совпадений не найдено |
Пример 2
Выполните глобальный поиск без учета регистра "ain":
let text = "The rain in SPAIN stays mainly in the plain";
text.match(/ain/gi) // Возвращает массив [ain,AIN,ain,ain]
Попробуйте сами »
String.includes()
Метод includes()
возвращает true, если строка содержит указанное значение.
Пример
let text = "Hello world, welcome to the universe.";
text.includes("world") // Возвращает true
Попробуйте сами »
Поддержка браузерами
String.includes() не поддерживается в Internet Explorer.
Chrome 41 | Edge 12 | Firefox 40 | Safari 9 | Opera 28 |
Mar 2015 | Jul 2015 | Aug 2015 | Oct 2015 | Mar 2015 |
Синтаксис
string.includes(searchvalue, start)
searchvalue | Обязательно. Строка для поиска |
start | Не обязательно. По умолчанию 0. Позиция для начала поиска. |
Возвращает: | Возвращает true если строка содержит значение, в противном случае false |
JS Версия: | ES6 (2015) |
Проверьте, есть ли в строке слово "world", начиная поиск с позиции 12:
let text = "Hello world, welcome to the universe.";
text.includes("world", 12) // Возвращает false
Попробуйте сами »
String.startsWith()
Метод startsWith()
возвращает true
если строка начинается с указанного значения, в противном случае false
:
Пример
let text = "Hello world, welcome to the universe.";
text.startsWith("Hello") // Возвращает true
Попробуйте сами »
Синтаксис
string.startsWith(searchvalue, start)
Значения параметров
Параметр | Описание |
---|---|
searchvalue | Обязательно. Значение для поиска |
start | Не обязательно. По умолчанию 0. Позиция начала поиска |
Примеры
let text = "Hello world, welcome to the universe.";
text.startsWith("world") // Возвращает false
let text = "Hello world, welcome to the universe.";
text.startsWith("world", 5) // Возвращает false
let text = "Hello world, welcome to the universe.";
text.startsWith("world", 6) // Возвращает true
Попробуйте сами »
Примечание: Метод startsWith()
чувствителен к регистру.
Метод startsWith()
не поддерживается в Internet Explorer.
Chrome 41 | Edge 12 | Firefox 17 | Safari 9 | Opera 28 |
Mar 2015 | Jul 2015 | Aug 2015 | Oct 2015 | Mar 2015 |
String.endsWith()
Метод endsWith()
возвращает true
если строка заканчивается указанным значением, в противном случае false
:
Пример
Проверьте, заканчивается ли строка на "Doe":
var text = "John Doe";
text.endsWith("Doe") // Возвращает true
Попробуйте сами »
Синтаксис
string.endswith(searchvalue, length)
Значения параметров
Параметр | Описание |
---|---|
searchvalue | Обязательно. Значение для поиска |
length | Не обязательно. Длина поиска |
Проверить 11 первых символов строки, оканчивающейся на "world":
let text = "Hello world, welcome to the universe.";
text.endsWith("world", 11) // Возвращает true
Примечание: Метод endsWith()
чувствителен к регистру.
Метод endsWith()
не поддерживается в Internet Explorer.
Chrome 51 | Edge 15 | Firefox 54 | Safari 10 | Opera 38 |
May 2016 | Apr 2017 | Jun 2017 | Sep 2016 | Jun 2016 |
Полный справочник строк
Для получения полной справки перейдите на Полный справочник JavaScript строк на нашем сайте W3Schools на русском.
Справочник содержит описания и примеры всех свойств и методов строк.