我有以下几点:
if (referrer.indexOf("Ral") == -1) { ... }
我喜欢做的事情就是让Ral
不区分大小写,因此,它可以是RAl
,rAl
等,仍然匹配。
有没有办法说Ral
必须不区分大小写?
我有以下几点:
if (referrer.indexOf("Ral") == -1) { ... }
我喜欢做的事情就是让Ral
不区分大小写,因此,它可以是RAl
,rAl
等,仍然匹配。
有没有办法说Ral
必须不区分大小写?
.toUpperCase()
之后添加referrer
。此方法将字符串转换为大写字符串。然后,使用.indexOf()
usingRAL
代替Ral
。
if (referrer.toUpperCase().indexOf("RAL") === -1) {
使用正则表达式也可以实现相同的目的(当您想针对动态模式进行测试时尤其有用):
if (!/Ral/i.test(referrer)) {
// ^i = Ignore case flag for RegExp
另一种选择是使用搜索方法如下:
if (referrer.search(new RegExp("Ral", "i")) == -1) { ...
它看起来比将整个字符串转换为小写更优雅,并且可能更有效。
随着toLowerCase()
代码有两个传过来的字符串,一个是通过对整个字符串将其转换为小写,另一个是寻找所需的索引。
使用RegExp
代码对它看起来与所需索引匹配的字符串进行一次传递。
因此,在长字符串上,我建议使用该RegExp
版本(我想在短字符串上,这种效率是由于创建RegExp
对象的原因)
从 ES2016 开始,您还可以使用更好/更简单/更优雅的方法(区分大小写):
if (referrer.includes("Ral")) { ... }
或(不区分大小写):
if (referrer.toLowerCase().includes(someString.toLowerCase())) { ... }
下面是一些比较.indexOf()
和.includes()
:
https://dev.to/adroitcoder/includes-vs-indexof-in-javascript
使用正则表达式:
if (!/ral/i.test(referrer)) {
...
}
或者,使用.toLowerCase()
:
if (referrer.toLowerCase().indexOf("ral") == -1)
这里有几种方法。
如果您只想对这个实例执行不区分大小写的检查,请执行以下操作。
if (referrer.toLowerCase().indexOf("Ral".toLowerCase()) == -1) {
...
或者,如果您定期执行此检查,则可以向 中添加一个新indexOf()
的类似方法String
,但不区分大小写。
String.prototype.indexOfInsensitive = function (s, b) {
return this.toLowerCase().indexOf(s.toLowerCase(), b);
}
// Then invoke it
if (referrer.indexOfInsensitive("Ral") == -1) { ...