一尘不染

不区分大小写的搜索

javascript

我正在尝试使用JavaScript中的两个字符串进行不区分大小写的搜索。

通常情况如下:

var string="Stackoverflow is the BEST";
var result= string.search(/best/i);
alert(result);

/i标志将不区分大小写。

但是我需要搜索第二个字符串。没有标志,它可以完美地工作:

var string="Stackoverflow is the BEST";
var searchstring="best";
var result= string.search(searchstring);
alert(result);

如果我/i在上面的示例中添加标志,它将搜索searchstring而不是变量“ searchstring”中的内容(下一个示例不起作用):

var string="Stackoverflow is the BEST";
var searchstring="best";
var result= string.search(/searchstring/i);
alert(result);

我该如何实现?


阅读 301

收藏
2020-05-01

共1个答案

一尘不染

是的,使用.match而不是.search.match调用的结果将返回匹配自身的实际字符串,但仍可以将其用作布尔值。

var string = "Stackoverflow is the BEST";
var result = string.match(/best/i);
// result == 'BEST';

if (result){
    alert('Matched');
}

在JavaScript中使用这样的正则表达式可能是最整齐,最明显的方法,但是请记住,它
一个正则表达式,因此可以包含regex元字符。如果您想从其他地方获取字符串(例如,用户输入),或者想要避免不得不转义许多元字符,那么最好使用indexOf这样的方法:

matchString = 'best';
// If the match string is coming from user input you could do
// matchString = userInput.toLowerCase() here.

if (string.toLowerCase().indexOf(matchString) != -1){
    alert('Matched');
}
2020-05-01