JavaScript 替换了所有忽略区分大小写的功能



我正在尝试将字符串中一个值的所有出现替换到另一个值

到目前为止,我所拥有的是

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

我在处理案件时遇到问题,有什么方法可以忽略这一点并仍然得到我想要的结果

您将使用捕获组和i(忽略大小写)修饰符获得所需的结果。可以使用$1引用捕获组。

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

查看 MDN 了解更多详情: https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/String/replace#Specifying_a_string_as_a_parameter

您需要使用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)

您需要添加不区分大小写的修饰符。 做这样的事情:

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

这将解决您的问题

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)

最新更新