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);

我怎样才能做到这一点?


是啊,用.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');
}

更换

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

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

如果你只是搜索一个字符串而不是一个更复杂的正则表达式,你可以使用indexOf() - 但记得首先要小写两个字符串,因为indexOf()是区分大小写的:

var string="Stackoverflow is the BEST"; 
var searchstring="best";

// lowercase both strings
var lcString=string.toLowerCase();
var lcSearchString=searchstring.toLowerCase();

var result = lcString.indexOf(lcSearchString)>=0;
alert(result);

或者在一行中:

var result = string.toLowerCase().indexOf(searchstring.toLowerCase())>=0;
链接地址: http://www.djcxy.com/p/8709.html

上一篇: JavaScript: case

下一篇: How to move screen without moving cursor in Vim?