我必须使用JavaScript检查一些字符串,但区分大小写会导致问题。 例如
if('abc'=='ABC')
{
return true;
}
尽管单词的含义相同,但它不会进入if循环。 我也不能使用tolower条款,因为我不知道数据将如何实现它意味着什么 例如:
if('aBc'=='abC')
{
return true;
}
如果可以通过jquery完成,如何为此编写JS函数。
答案 0 :(得分:115)
您可以将两个参数都设置为小写,这样您将始终以不区分大小写的搜索结束。
var string1 = "aBc";
var string2 = "AbC";
if (string1.toLowerCase() === string2.toLowerCase())
{
#stuff
}
答案 1 :(得分:18)
使用正则表达式的另一种方法(这比Zachary的答案更正确):
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编写的,但除此之外,它似乎是一个不错的初学者教程: http://weblogtoolscollection.com/regex/regex.php
这似乎是测试正则表达式的好工具: http://gskinner.com/RegExr/
答案 2 :(得分:9)
您也可以使用string.match()。
var string1 = "aBc";
var match = string1.match(/AbC/i);
if(match) {
}
答案 3 :(得分:4)
试试这个......
if(string1.toLowerCase() == string2.toLowerCase()){
return true;
}
此外,它不是一个循环,它是一个代码块。循环通常是重复的(虽然它们可能只执行一次),而代码块从不重复。
我读到了关于不使用toLowerCase的说明,但看不出为什么会出现问题。