如何在JavaScript中执行不区分大小写的替换?

Mar*_*ary 3 javascript regex node.js

我目前有以下代码:

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);
Run Code Online (Sandbox Code Playgroud)

它产生以下内容:

The <b>quick</b> brown fox jumped over the lazy QUICK dog
Run Code Online (Sandbox Code Playgroud)

我想要的是:

The <b>quick</b> brown fox jumped over the lazy <b>QUICK</b> dog
Run Code Online (Sandbox Code Playgroud)

我有两个问题。

首先,为什么QUICK我不区分大小写的正则表达式不被替换?

其次,我如何确保QUICK<b>QUICK</b>和代替<b>quick</b>

Cer*_*nce 5

您需要传递<b>$&</b>第二个参数.replace来插入匹配的子字符串:

const string = "The quick brown fox jumped over the lazy QUICK dog";
console.log(
  string.replace(/quick/gi, '<b>$&</b>')
);
Run Code Online (Sandbox Code Playgroud)

QUICK的原始代码不会替换您,因为

const replaced = string.replace(pattern, 
Run Code Online (Sandbox Code Playgroud)

是传递的pattern,它是一个字符串,而不是构造的regex(其变量名是re)。如果您已通过re,则会看到:

const replaced = string.replace(pattern, 
Run Code Online (Sandbox Code Playgroud)

不会保留原始大小写,因此需要'<b>$&</b>'