На Stackoverflow советуют использовать new RegExp(find, 'g')
, чтобы заменить все вхождения подстроки в строку. Но все забывают о том, что у регексов свой специфический синтаксис.
Например, от вызова str.replaceAll('.', '!')
мы ждём, что функция заменит все точки на восклицательные знаки, а не сделает все символы в строке восклицательными знаками. Потому считаю, что нужно эскейпить все символы в подстроке:
String.prototype.replaceAll = function(search, replace){
var regex = search.replace(/(.)/g, "\$1");
return this.replace(new RegExp(regex, "g"), replace);
}