我正在try 在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');
}

Javascript相关问答推荐

无法将nPM simplex-noise包导入在JS项目中工作

通过在页面上滚动来移动滚动条

格式值未保存在redux持久切片中

微软Edge编辑和重新发送未显示""

如何在Obsidian dataview中创建进度条

如何在Javascript中使用Go和检索本地托管Apache Arrow Flight服务器?

无法访问Vue 3深度监视器中对象数组的特定对象值'

如何解决useState错误—setSelect Image不是函数''

为什么我的导航条打开状态没有在窗口addeventlistener(Reaction Js)中更新?

rxjs插入延迟数据

在使用REACT更改了CSS类之后,无法更改CSS样式

Nextjs 13.4 Next-Auth 4.2登录(&Quot;凭据&,{});不工作

面对代码中的错误作为前端与后端的集成

警告框不显示包含HTML输入字段的总和

如何使本地html页面在重新加载时保持当前可隐藏部分的打开状态?

输入的值的类型脚本array.排序()

在JavaScript中,有没有一种方法可以迭代字符串的词法标记?

在高位图中显示每个y轴系列的多个值

使用Library chart.js在一个带有两个y轴的图表中绘制两个数据集

用内嵌的含selenium的Java脚本抓取网站