我目前有以下代码:
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,
正在传递 pattern,它是一个 string,而不是您构造的正则表达式(其变量名称是 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);
它不保留原始外壳,因此需要 '<b>$&</b>'
.
关于javascript - 如何在 JavaScript 中执行不区分大小写的替换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52175779/