我正在尝试将字符串中一个值的所有出现替换到另一个值
到目前为止,我所拥有的是
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)