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 на русском.
Справочник содержит описания и примеры всех свойств и методов строк.

