js 字符串替换全部

js的replace只能替换第一个,请问大家都是怎么些替换全部的,RegExp的方式替换类似"("的时候就出错了,有没有优雅一点的写法?

String.prototype.replaceAll = function (FindText, RepText) { 
    regExp = new RegExp(FindText, "gm"); 
    return this.replace(regExp, RepText); 
}
// 开始测试
var s = "abcdefabcedf(123)";
console.log(s.replaceAll("b", "B"));    // 正常
console.log(s.replaceAll("(", "["));    // 挂了。。。
/*
Uncaught SyntaxError: Invalid regular expression: /(/: Unterminated group
    at new RegExp (<anonymous>)
    at String.replaceAll (<anonymous>:2:11)
    at <anonymous>:7:15
*/

总觉得js的一些语言基础功能用起来蛋疼的不行。。。

阅读 4.5k
2 个回答

这样就行了,就是不知道效率怎么样:

String.prototype.replaceAll = function (FindText, RepText) { 
    return this.split(FindText).join(RepText); 
}

替换全部,就是用正则表达式的 加上全局 g的标示, 对于 " 和 ' 是需要转义的 \" 和 \'

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题