方法 - 正确
/**
* 字符串文字替换 - 全部替换 - 批量替换
*
* 【思路1】正则匹配
* var reg = new RegExp(search, "g")
* str = String(str)
* return str.replace(reg, replaceWith)
* 当search中携带正则预留的特殊字符时,无报错,但是无法替换
* 详细 https://cloud.tencent.com/developer/article/1651271
* JS的正则转义暂无稳妥的方案,RegExp.escape()在firefox、safari中支持,但是chrome、edge不支持。
* 参见 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/escape
* 民间转义方法(MDN上提供的一个解决方案):return string.replace(/[.*+?^${}()|[\]\\]/g, "\\$&"); 无法保证完整性
* 参见 https://juejin.cn/post/7416605082690043954
*
* 【思路2】切割合并
* string.split(search).join(replaceWith)
*/
function replace_all(str, search = '', replaceWith = '') {
str = String(str)
if (search === '') {
return str
} else {
return str.split(search).join(replaceWith)
}
}
方法 - 有问题,当被替换的字符中包含正则的特殊符号时,无效
// 有问题,当被替换的字符中包含正则的特殊符号时,无效
// 有问题,当被替换的字符中包含正则的特殊符号时,无效
// 有问题,当被替换的字符中包含正则的特殊符号时,无效
/* 把f全部换为e */
String.prototype.replaceAll=function(f,e){
var reg=new RegExp(f,"g");
return this.replace(reg,e);
}
/* 使用方法 */
var str = '贪吃的吃货很会吃!';
var newstr = str.replaceAll('吃','玩');
alert(newstr); // 贪玩的玩货很会玩!
感谢大神:
js全部替换
相关
String.prototype.replaceAll
js正则replace替换多个字符
js字符串replace替换多个
js replace正则匹配替换多个不同字符串的实现方法
js replace全部替换的方法
replace里的g表示全局替换,而每个关键词前面的\则为转义字符,在针对html类的标签替换的时候,是必不可少的。
js 全部替换