我目前有以下代码:
const pattern = "quick";
const re = new RegExp(pattern, "gi");
const string = "The quick brown fox jumped over the lazy QUICK dog";
const replaced = string.replace(pattern, "<b>" + pattern + "</b>");
console.log(replaced);
它产生以下内容:
The <b>quick</b> brown fox jumped over the lazy QUICK dog
我想要的是:
The <b>quick</b> brown fox jumped over the lazy <b>QUICK</b> dog
我有两个问题。
首先,当我使用不区分大小写的正则表达式时,为什么
QUICK
没有被替换?其次,如何确保
QUICK
替换为 <b>QUICK</b>
而不是 <b>quick</b>
? 最佳答案
您需要将 <b>$&</b>
作为第二个参数传递给 .replace
以插入匹配的子字符串:
const string = "The quick brown fox jumped over the lazy QUICK dog";
console.log(
string.replace(/quick/gi, '<b>$&</b>')
);
您的
QUICK
没有在原始代码中被替换,因为const replaced = string.replace(pattern,
正在传递模式,它是一个字符串,而不是您构造的正则表达式(其变量名称是
re
)。如果你通过了 re
,你会看到:const pattern = "quick";
const re = new RegExp(pattern, "gi");
const string = "The quick brown fox jumped over the lazy QUICK dog";
const replaced = string.replace(re, "<b>" + pattern + "</b>");
console.log(replaced);
它不保留原始 shell ,因此需要
'<b>$&</b>'
。关于javascript - 如何在 JavaScript 中执行不区分大小写的替换?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52175779/