js在如果值接使用replace(FromStr, ToStr)的方式的话只会替换第一个,当然可以使用正则表达式g的方式去替换,但我用起来不是很直观,于是有下面:
String.prototype.ReplaceG = function(sFrom, sTo) {
var result = this;
sFrom = sFrom
.replace(/[\\]/g, '\\\\')
.replace(/[\*]/g, '\\*')
.replace(/[\.]/g, '\\.')
.replace(/[\?]/g, '\\?')
.replace(/[\+]/g, '\\+')
.replace(/[\$]/g, '\\$')
.replace(/[\^]/g, '\\^')
.replace(/[\[]/g, '\\[')
.replace(/[\]]/g, '\\]')
.replace(/[\(]/g, '\\(')
.replace(/[\)]/g, '\\)')
.replace(/[\{]/g, '\\{')
.replace(/[\}]/g, '\\}')
.replace(/[\|]/g, '\\|')
.replace(/[\/]/g, '\\/');
var reg = new RegExp(sFrom, "g");
result = result.replace(reg, sTo);
return result;
}
使用:
"1*2.3?4+5$6^7[8]9(0)1{2}3|4\5/6A1*2.3?4+5$6^7[8]9(0)1{2}3|4\5/6A1*2.3?4+5$6^7[8]9(0)1{2}3|4\5/6A".ReplaceG("1*2.3?4+5$6^7[8]9(0)1{2}3|4\5/6", "M");
输出:"MAMAMA"
补充下,网上有很多这样的文章,但是都不能解决问题:
例如:
https://blog.csdn.net/txp1993/article/details/42120141