Как сравнить строки без учёта регистра
Короткий ответ
Приведите обе строки к одному регистру и сравните:
const a = 'Hello';
const b = 'HELLO';
console.log(a.toLowerCase() === b.toLowerCase());Результат:
trueЧерез localeCompare
localeCompare() возвращает 0 для равных строк. Параметр sensitivity: 'base' не учитывает регистр и диакритические знаки:
console.log('Cafe'.localeCompare('café', 'en', { sensitivity: 'base' }) === 0);
console.log('apple'.localeCompare('APPLE', 'en', { sensitivity: 'base' }) === 0);Результат:
true
trueПоиск без учёта регистра
Тот же приём работает и для поиска внутри строки:
const text = 'JavaScript is fun';
console.log(text.toLowerCase().includes('javascript'));Результат:
trueЧастая ошибка
Оператор == здесь не поможет: он приводит типы, но регистр не игнорирует.
console.log('yes' == 'YES');Результат:
falseФункции из этого ответа
- String.prototype.toLowerCase — Переводит строку в нижний регистр.
- String.prototype.localeCompare — Сравнивает строки по правилам языка — для сортировки по алфавиту.