关于jquery:javascript比较字符串而不区分大小写

javascript compare strings without being case sensitive

本问题已经有最佳答案,请猛点这里访问。

我必须使用javascript检查一些字符串,但区分大小写会造成问题。例如

1
2
3
4
if('abc'=='ABC')
{
return true;
}

它不会进入if循环,尽管单词的含义相同。我也不能用tolower子句,因为我不知道数据的含义对于EX:

1
2
3
4
if('abc'=='ABC')
{
return true;
}

如果可以通过jquery完成,那么如何为此编写JS函数。


您可以将这两个参数都设为小写,这样,您将始终以不区分大小写的搜索结束。

1
2
3
4
5
6
7
var string1 ="aBc";
var string2 ="AbC";

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


另一种使用正则表达式的方法(这比Zachary的答案更正确):

1
2
3
4
5
6
7
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/


也可以使用string.match()。

1
2
3
4
5
var string1 ="aBc";
var match = string1.match(/AbC/i);

if(match) {
}


试试这个…

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

而且,它不是一个循环,而是一个代码块。循环通常是重复的(尽管它们可能只能执行一次),而代码块从不重复。

我看了你的便条,说不要用托洛维卡糖,但不明白为什么会有问题。