我目前有以下代码:

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/

10-14 14:22
查看更多