Javascript сравнить строки без учета регистра
Мне нужно проверить некоторые строки с помощью JavaScript, но чувствительность к регистру вызывает проблемы.
например
if('abc'=='ABC')
{
return true;
}
он не войдет внутрь цикла if, хотя значение слова будет таким же.
Я не могу использовать tolower предложение слишком, так как я не знаю, как это произойдет
для ex:
if('abc'=='ABC')
{
return true;
}
как написать JS-функцию для этого, если это можно сделать с помощью jquery.
Ответы
Ответ 1
Вы можете сделать оба аргумента более строчными, и таким образом вы всегда окажетесь без учета регистра, нечувствительного к регистру.
var string1 = "aBc";
var string2 = "AbC";
if (string1.toLowerCase() === string2.toLowerCase())
{
#stuff
}
Ответ 2
Другой метод, использующий регулярное выражение (это более корректно, чем ответ Захари):
var string1 = 'someText',
string2 = 'SometexT',
regex = new RegExp('^' + string1 + '$', 'i');
if (regex.test(string2)) {
return true;
}
RegExp.test() вернет true или false.
Кроме того, добавив '^' (обозначая начало строки) в начало и '$' (означая конец строки) до конца, убедитесь, что ваше регулярное выражение будет соответствовать только если "sometext" единственный текст в stringToTest. Если вы ищете текст, который содержит регулярное выражение, это нормально, чтобы оставить их выключенными.
Просто проще использовать метод string.toLowerCase().
Итак... регулярные выражения являются мощными, но вы должны использовать их только в том случае, если вы понимаете, как они работают. Неожиданные вещи могут произойти, когда вы используете что-то, чего не понимаете.
Есть тонны регулярных выражений 'tutorials', но большинство, похоже, пытается подтолкнуть определенный продукт. Здесь то, что выглядит как приличный учебник... предоставлено, оно написано для использования php, но в остальном оно похоже на хороший учебник для начинающих:
http://weblogtoolscollection.com/regex/regex.php
Это, кажется, хороший инструмент для проверки регулярных выражений:
http://gskinner.com/RegExr/
Ответ 3
Вы также можете использовать string.match().
var string1 = "aBc";
var match = string1.match(/AbC/i);
if(match) {
}
Ответ 4
Попробуйте это...
if(string1.toLowerCase() == string2.toLowerCase()){
return true;
}
Кроме того, это не цикл, это блок кода. Циклы обычно повторяются (хотя они могут выполняться только один раз), тогда как блок кода никогда не повторяется.
Я прочитал вашу заметку о том, что не использую toLowerCase, но не могу понять, почему это будет проблемой.