Skip to content

如何用 JavaScript 替换字符串中的所有匹配项

Posted on:2023年10月13日 at 06:20

JavaScript 中的 replace() 方法可以替换字符串中的第一个匹配项。要替换所有匹配项,可以使用以下方法:

  1. 使用 replace() 方法并添加 g 标志。g 标志表示全局替换。
  2. 使用 replaceAll() 方法。replaceAll() 方法是 ES2021 中引入的新方法,用于替换字符串中的所有匹配项。

以下示例展示了如何使用 replace() 方法和 replaceAll() 方法替换所有匹配项:

const str = "Test abc test test abc test test test abc test test abc";

// 使用 replace() 方法
const newStr1 = str.replace(/abc/g, "");

// 使用 replaceAll() 方法
const newStr2 = str.replaceAll("abc", "");

console.log(newStr1); // Test test test test test test test test test test test
console.log(newStr2); // Test test test test test test test test test test test

如果 abc 是一个变量,可以使用以下方法替换所有匹配项:

const find = "abc";
const re = new RegExp(find, "g");

const newStr = str.replace(re, "");

也可以使用以下方法替换所有匹配项:

function replaceAll(str, find, replace) {
  return str.replace(new RegExp(find, "g"), replace);
}

const newStr = replaceAll(str, "abc", "");

出于安全原因,在使用 replaceAll() 方法之前,应先使用 escapeRegExp() 函数对要替换的字符串进行转义。escapeRegExp() 函数可以转义正则表达式中的特殊字符。

以下示例展示了如何使用 escapeRegExp() 函数和 replaceAll() 方法替换所有匹配项:

function escapeRegExp(string) {
  return string.replace(/[.*+?^${}()|[\]\\]/g, "\\$&"); // $& 表示整个匹配的字符串
}

function replaceAll(str, find, replace) {
  return str.replace(new RegExp(escapeRegExp(find), "g"), replace);
}

const newStr = replaceAll(str, "abc", "");