我正在尝试使用JavaScript中的两个字符串进行不区分大小写的搜索。
通常情况如下:
var string="Stackoverflow is the BEST"; var result= string.search(/best/i); alert(result);
该/i标志将不区分大小写。
/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);
我该如何实现?
是的,使用.match而不是.search。.match调用的结果将返回匹配自身的实际字符串,但仍可以将其用作布尔值。
.match
.search
var string = "Stackoverflow is the BEST"; var result = string.match(/best/i); // result == 'BEST'; if (result){ alert('Matched'); }
在JavaScript中使用这样的正则表达式可能是最整齐,最明显的方法,但是请记住,它 是 一个正则表达式,因此可以包含regex元字符。如果您想从其他地方获取字符串(例如,用户输入),或者想要避免不得不转义许多元字符,那么最好使用indexOf这样的方法:
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'); }