在JS String对象中,有个replace方法,但对于该方法,每次替换只能替换到一个字符串,即
var a='abcda';
var b=a.replace('a','f');
console.log(b);
输出的结果是 fbcda,如果要把字符串内指定的字符串全部都替换掉,js原生是没有提供这个方法的(在Jq中倒是有replaceAll这个方法)
所以为了方便使用,可以自己写一个属于js的replaceAll//指定字符替换函数replaceAll(stringA,'stringB') stringA为被替换字符串 stringB为替换字符,stringC为将要替换的新字符
function replaceAll(stringA,stringB,stringC){
var result = stringA;
var str = stringB;
var traget = stringC;
var re = new RegExp(str,'g');
result = result.replace(re,traget);
return result;
}
一开始,我是想用字面量这样写的
result = result.replace('/' + str + '/g',traget);
以为用这种旁门左道的办法可以在正则中引用变量,发现...并不可以
但是正则构造函数中是允许引用变量的,所以改写成
var re = new RegExp(str,'g');
result = result.replace(re,traget);
关于正则中引用变量的参考:
传送门: JS中给正则表达式加变量