Encodera

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.

Как сравнить строки без учёта регистра

Короткий ответ

Приведите обе строки к одному регистру и сравните:

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

Функции из этого ответа

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.