Как проверить, содержит ли строка подстроку
Короткий ответ
Метод includes() возвращает true, если подстрока найдена:
console.log('Hello, world'.includes('world'));Результат:
trueБез учёта регистра
Поиск учитывает регистр. Чтобы его не учитывать, приведите обе строки к нижнему регистру:
const text = 'Hello, World';
console.log(text.toLowerCase().includes('WORLD'.toLowerCase()));Результат:
trueУзнать позицию
Если нужно знать, где находится подстрока, используйте indexOf(). Он возвращает позицию или -1:
console.log('Hello, world'.indexOf('world'));Результат:
7Одно из нескольких слов
Чтобы проверить список слов, объедините some() с includes():
const message = 'Get a free gift now';
const spamWords = ['free', 'winner', 'prize'];
console.log(spamWords.some((word) => message.toLowerCase().includes(word)));Результат:
trueЧастая ошибка
indexOf() возвращает 0, если подстрока в самом начале, а 0 — ложное значение. Не используйте результат indexOf() как условие напрямую:
const text = 'Hello, world';
console.log(text.indexOf('Hello') ? 'found' : 'not found');
console.log(text.includes('Hello') ? 'found' : 'not found');Результат:
not found
foundФункции из этого ответа
- String.prototype.includes — Проверяет, содержит ли строка заданную подстроку.
- String.prototype.indexOf — Находит позицию первого вхождения подстроки.
- String.prototype.toLowerCase — Переводит строку в нижний регистр.