it-roy-ru.com

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

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

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

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

if('aBc'=='abC')
{
return true;
}

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

60
ankur

Вы можете сделать оба аргумента строчными, и таким образом у вас всегда будет поиск без учета регистра.

var string1 = "aBc";
var string2 = "AbC";

if (string1.toLowerCase() === string2.toLowerCase())
{
    #stuff
}
115
Gazler

Другой метод, использующий регулярное выражение (это более правильно, чем ответ Захари):

var string1 = 'someText',
    string2 = 'SometexT',
    regex = new RegExp('^' + string1 + '$', 'i');

if (regex.test(string2)) {
    return true;
}

RegExp.test () вернет true или false.

Кроме того, добавляя "^" (обозначающий начало строки) в начало и "$" (обозначая конец строки) в конце, убедитесь, что ваше регулярное выражение будет совпадать, только если "sometext" является единственным текстом в stringToTest. Если вы ищете текст, который содержит регулярное выражение, то можно его отключить.

Возможно, будет проще использовать метод string.toLowerCase ().

Итак ... регулярные выражения мощны, но вы должны использовать их, только если понимаете, как они работают Неожиданные вещи могут произойти, когда вы используете то, что вы не понимаете.

Существует множество "учебных пособий" по регулярным выражениям, но большинство, похоже, пытаются продвинуть определенный продукт. Вот что выглядит как приличный учебник ... предоставлен, он написан для использования php, но в остальном он выглядит как учебник для начинающих Nice: http://weblogtoolscollection.com/regex/regex.php

Это хороший инструмент для проверки регулярных выражений: http://gskinner.com/RegExr/

18
Akrikos

Вы также можете использовать string.match ().

var string1 = "aBc";
var match = string1.match(/AbC/i);

if(match) {
}
9
Zachary

Попробуй это...

if(string1.toLowerCase() == string2.toLowerCase()){
    return true;
}

Кроме того, это не цикл, это блок кода. Циклы обычно повторяются (хотя они могут выполняться только один раз), тогда как блок кода никогда не повторяется.

Я прочитал вашу заметку о неиспользовании toLowerCase, но не понимаю, почему это может быть проблемой.

4
belugabob