js实现replaceall
在JavaScript中实现replaceAll功能
JavaScript的String.prototype.replace方法默认只替换第一个匹配项。要实现替换所有匹配项的功能,可以使用以下方法:
使用正则表达式全局替换
通过正则表达式配合g标志实现全局替换:
const str = "Hello world, hello universe";
const newStr = str.replace(/hello/gi, "hi");
console.log(newStr); // "Hi world, hi universe"
使用split和join组合 这种方法不需要正则表达式:
const str = "apple orange apple banana";
const newStr = str.split("apple").join("orange");
console.log(newStr); // "orange orange orange banana"
现代JavaScript的replaceAll方法
ES2021引入了原生replaceAll方法:
const str = "a b c a d a";
const newStr = str.replaceAll("a", "z");
console.log(newStr); // "z b c z d z"
polyfill实现
对于不支持replaceAll的环境,可以添加polyfill:
if (!String.prototype.replaceAll) {
String.prototype.replaceAll = function(search, replacement) {
return this.split(search).join(replacement);
};
}
注意事项
- 使用正则表达式时要注意特殊字符的转义
replaceAll方法区分大小写,如需忽略大小写仍需使用正则表达式- 性能考虑:对于大量替换操作,split/join通常比正则表达式更快






