JavaScript中的replaceAll

总所周知,js的字符串替换函数replace()只能替换目标字符串, 网上给出的解法通常是:

String.prototype.replaceAll = function(search, replacement) {
var target = this;
return target.replace(new RegExp(search, 'g'), replacement);
};

这个方法的问题是因为使用了正则表达式, 所以search串中如果出现了正则表达式的关键字, 会出现意想不到的效果,甚至会报错

比如:

var aaa="s[aves[ave";
aaa.replaceAll("s[ave","slave"); //Uncaught SyntaxError: Invalid regular expression: /s[ave/:
aaa.replaceAll("s\\[ave","slave"); //只这样调用, 加入转义字符

这种方式实在恶心, 可以考虑使用split再join的方式

String.prototype.replaceAll = function(search, replacement) {
var target = this;
return target.split(search).join(replacement);
};