JavaScript忽略大小写替换所有出现的内容

8

我想替换字符串中所有出现的一个值为另一个值。

目前我已经有了以下代码:

var result = "Cooker Works" 
var searchterm = "cooker wor";

searchterm.split(" ").forEach(function (item) {
   result = result.replace(new RegExp(item, 'g'), "<strong>" + item + "</strong>");
});
    
console.log(result)

我要的结果应该类似于:
result = "<strong>Cooker</strong> <strong>Wor</strong>s";

我在处理这个案例时遇到了问题,有没有办法可以忽略它,仍然得到我想要的结果。

4个回答

7

1
我的脑袋炸了。这个东西已经存在5年了,我现在才发现? - Morvael

7

您需要使用 i 修饰符进行不区分大小写匹配

new RegExp(item, 'ig')

var result = "Cooker Works"
var searchterm = "cooker wor";

searchterm.split(" ").forEach(function(item) {
  var matchs = result.match(new RegExp(item, 'ig'));
  if (matchs.length)
    result = result.replace(new RegExp(item, 'ig'), "<strong>" + matchs[0] + "</strong>");
});

console.log(result)


1
你有没有注意到这不会给他想要的结果? - Dekel
你的代码在以下情况下无效,结果为“Cooker Works cooker”。 - Puneet
@Puneet,同意。 - Satpal

2

您需要添加不区分大小写的修饰符。可以像这样操作:

    var result = "Cooker Works" 
    var searchterm = "cooker wor";
    
    searchterm.split(" ").forEach(function (item) {
    result = result.replace(new RegExp('(' + item + ')', 'gi'),'<strong>$1</strong>');
    });
    console.log(result);


1
这将解决您的问题。

var result = "Cooker Works" 
var searchterm = "cooker wor";

searchterm.split(" ").forEach(function (item) {
     result = result.replace(new RegExp(item, 'ig'), "<strong>" + result.match(new RegExp(item, 'ig')) + "</strong>");
});

console.log(result)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接