Подтвердить что ты не робот

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

Мне нужно проверить некоторые строки с помощью JavaScript, но чувствительность к регистру вызывает проблемы. например

if('abc'=='ABC')
{
return true;
}

он не войдет внутрь цикла if, хотя значение слова будет таким же. Я не могу использовать tolower предложение слишком, так как я не знаю, как это произойдет для ex:

if('abc'=='ABC')
{
return true;
}

как написать JS-функцию для этого, если это можно сделать с помощью jquery.

4b9b3361

Ответ 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, но не могу понять, почему это будет проблемой.