JavaScript 中的 replace()
方法可以替换字符串中的第一个匹配项。要替换所有匹配项,可以使用以下方法:
- 使用
replace()
方法并添加g
标志。g
标志表示全局替换。 - 使用
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", "");