我有以下几点:

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

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

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


当前回答

为了做一个更好的搜索使用下面的代码,

var myFav   = "javascript";
var theList = "VB.NET, C#, PHP, Python, JavaScript, and Ruby";

// Check for matches with the plain vanilla indexOf() method:
alert( theList.indexOf( myFav ) );

// Now check for matches in lower-cased strings:
alert( theList.toLowerCase().indexOf( myFav.toLowerCase() ) );

在第一个alert()中,JavaScript返回"-1" -换句话说,indexOf()没有找到匹配:这只是因为"JavaScript"在第一个字符串中是小写的,在第二个字符串中是正确的大写。要使用indexOf()执行不区分大小写的搜索,可以将两个字符串都设置为大写或小写。这意味着,与第二个alert()一样,JavaScript将只检查所寻找的字符串是否出现,忽略大小写。

参考, http://freewebdesigntutorials.com/javaScriptTutorials/jsStringObject/indexOfMethod.htm

其他回答

在ES2016中,你还可以使用稍微更好/更简单/更优雅的方法(区分大小写):

if (referrer.includes("Ral")) { ... }

或(不区分大小写):

if (referrer.toLowerCase().includes(someString.toLowerCase())) { ... }

下面是.indexOf()和.includes()的比较: https://dev.to/adroitcoder/includes-vs-indexof-in-javascript

任何语言的例子:

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

这样更好~!

if (~referrer.toUpperCase().indexOf("RAL")) { 
    console.log("includes")
}

如果referrer是一个数组,则可以使用findIndex()

 if(referrer.findIndex(item => 'ral' === item.toLowerCase()) == -1) {...}

这里有几种方法。

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

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) { ...