javascript比较字符串而不区分大小写[重复]

Posted

技术标签:

【中文标题】javascript比较字符串而不区分大小写[重复]【英文标题】:javascript compare strings without being case sensitive [duplicate] 【发布时间】:2011-06-22 14:36:03 【问题描述】:

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

if('abc'=='ABC')

return true;

虽然单词的意思相同,但它不会进入 if 循环。 我也不能使用 tolower 子句,因为我不知道数据是怎么来的 例如:

if('aBc'=='abC')

return true;

如果可以通过jquery来实现的话,如何为此编写JS函数。

【问题讨论】:

已经回答的问题有很多更好的信息。我建议您(当前读者)忽略此页面 【参考方案1】:

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

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

if (string1.toLowerCase() === string2.toLowerCase())

    #stuff

【讨论】:

注意:你需要小心不加选择地将它应用到代码中,因为如果两个变量都为 null,则 string1 == string2 将返回 true,如果只有一个为 null,则返回 false。而 string1.toLowerCase() == string2.toLowerCase() 如果任一变量为空,则会抛出错误。 实际上,正如已经回答的问题中所指出的,您不应使用.toLowerCase(),而应使用.toUpperCase()。见***.com/questions/2140627/… 和msdn.microsoft.com/en-us/library/bb386042.aspx 三个等号? ===【参考方案2】:

试试这个...

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

另外,它不是一个循环,而是一个代码块。循环通常会重复(尽管它们可能只执行一次),而代码块永远不会重复。

我阅读了您关于不使用 toLowerCase 的说明,但不明白为什么会出现问题。

【讨论】:

【参考方案3】:

你也可以使用 string.match()。

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

if(match) 

【讨论】:

是否也可以使用其他变量代替 /AbC/ 部分???? YeppThat'sMe: 是的,你可以这样做: var string1 = "aBc", regex = /AbC/i, match = string1.match(regex);请注意,匹配将是匹配正则表达式的字符串部分,如果正则表达式不匹配任何内容,则为 null。我将发布一个使用不同正则表达式方法的替代答案。 你应该使用/^abc$/i.test("aBc"),因为在开始和结束时没有锚,它实际上是在说包含,而不是等于【参考方案4】:

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

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

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

RegExp.test() 将返回真或假。

此外,将“^”(表示字符串的开头)添加到开头,将“$”(表示字符串的结尾)添加到末尾,确保您的正则表达式仅在“sometext”为stringToTest 中唯一的文本。如果您要查找包含正则表达式的文本,可以将其关闭。

使用 string.toLowerCase() 方法可能更容易。

所以... 正则表达式很强大,但只有在了解它们的工作原理后才能使用它们。当你使用你不理解的东西时,可能会发生意想不到的事情。

有大量的正则表达式“教程”,但大多数似乎都在尝试推广某个产品。这是一个看起来不错的教程……当然,它是为使用 php 编写的,但除此之外,它似乎是一个不错的初学者教程: http://weblogtoolscollection.com/regex/regex.php

这似乎是一个测试正则表达式的好工具: http://gskinner.com/RegExr/

【讨论】:

这个最好,即使它适用于 null,而 toUpperCase 或 toLowerCase 给出错误 - estupendo 如果 string1 不是有效的正则表达式模式怎么办?例如new RegExp('^(a$', 'i') @Bohdan,我鼓励你在 js 控制台中尝试这种事情。如果你这样做了,你会发现你的浏览器抛出了一个 SyntaxError,所以我认为它与这种情况无关。 我发布这个答案已经有几年了。我想为后人指出,当我需要进行不区分大小写的比较时,我通常会使用 Gazler 的 toUpperCase 答案的变体。一般来说,正则表达式比其他内置方法慢。

以上是关于javascript比较字符串而不区分大小写[重复]的主要内容,如果未能解决你的问题,请参考以下文章

Javascript匹配-不区分大小写[重复]

使用Javascript的正则表达式不区分大小写[重复]

正则表达式:匹配以“AM”结尾的单词(不区分大小写比较)[重复]

如何排序字符串列表而不考虑特殊字符和不区分大小写

从熊猫数据框中删除重复行:不区分大小写的比较

如何删除具有区分大小写名称的重复目录?