我有以下几点:

if (referrer.indexOf("Ral") == -1) { ... }

我喜欢做的是使Ral不区分大小写,这样它可以是Ral, Ral等,仍然匹配。

有办法说拉尔必须不区分大小写吗?


当前回答

另一种选择是使用如下的搜索方法:

if (referrer.search(new RegExp("Ral", "i")) == -1) { ...

它看起来比将整个字符串转换为小写更优雅,而且可能更高效。 使用toLowerCase()代码对字符串进行了两次传递,一次是对整个字符串进行传递,将其转换为小写,另一次是寻找所需的索引。 在RegExp中,代码只传递一次字符串,以便与所需的索引匹配。

因此,对于长字符串,我建议使用RegExp版本(我猜对于短字符串,这种效率来自于创建RegExp对象)

其他回答

任何语言的例子:

'My name is Хведор'.toLocaleLowerCase().includes('ХвЕдОр'.toLocaleLowerCase())

你可以试试这个

str = "哇,太酷了" searchStr = "CoOl" console.log (str.toLowerCase()其中包括(searchStr.toLowerCase ()))

在referrer后添加. touppercase()。此方法将字符串转换为大写字符串。然后,使用. indexof()使用RAL代替RAL。

if (referrer.toUpperCase().indexOf("RAL") === -1) { 

使用正则表达式也可以达到同样的效果(当你想测试动态模式时特别有用):

if (!/Ral/i.test(referrer)) {
   //    ^i = Ignore case flag for RegExp

这里有几种方法。

如果您希望仅对该实例执行不区分大小写的检查,请执行如下操作。

if (referrer.toLowerCase().indexOf("Ral".toLowerCase()) == -1) {
    ...

或者,如果定期执行这种检查,可以向String添加一个新的类似indexOf()的方法,但要使其不区分大小写。

String.prototype.indexOfInsensitive = function (s, b) {
    return this.toLowerCase().indexOf(s.toLowerCase(), b);
}

// Then invoke it
if (referrer.indexOfInsensitive("Ral") == -1) { ...

另一种选择是使用如下的搜索方法:

if (referrer.search(new RegExp("Ral", "i")) == -1) { ...

它看起来比将整个字符串转换为小写更优雅,而且可能更高效。 使用toLowerCase()代码对字符串进行了两次传递,一次是对整个字符串进行传递,将其转换为小写,另一次是寻找所需的索引。 在RegExp中,代码只传递一次字符串,以便与所需的索引匹配。

因此,对于长字符串,我建议使用RegExp版本(我猜对于短字符串,这种效率来自于创建RegExp对象)