不区分大小写的搜索

我试图在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);

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

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

我怎样才能做到这一点?


答案 1

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

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

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

使用这样的正则表达式可能是在JavaScript中最整洁,最明显的方法,但请记住它是一个正则表达式,因此可以包含正则表达式元字符。如果你想从其他地方获取字符串(例如,用户输入),或者如果你想避免逃避很多元字符,那么你最好像这样使用: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');
}

答案 2

取代

var result= string.search(/searchstring/i);

var result= string.search(new RegExp(searchstring, "i"));