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

标签 javascript node.js regex

我目前有以下代码:

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/

相关文章:

javascript - 如何将数组中的自由文本元素 append 到 DOM

html2jade : converting html 2 jade with tabs as indentation

node.js - 如何限制express api仅允许来自您的客户端的post请求?

Python re.sub(简单但卡住了)

c# - 希伯来语和符号的正则表达式

Java正则表达式在两个模式之间插入单个字符

javascript - 如果第一个条件失败,为什么 javascript 会评估多个 AND 条件

javascript - 如何修复 Material Design Light - SCEditor 冲突?

javascript - 如何在 session 存储中使用相同的键更新数组

node.js - 可写流可以通过管道传输到可读或可写流吗