今天因老师项目需要,在JavaScript中需要替换一段字符串中所有的指定字符串,给转义替换一下。刚开始有了思路逻辑之后,我以为用String.replace可以达到效果,使用后发现逻辑没有问题却怎么都达不到预期的效果。后来才知道js的replace只能替换第一个字符串,后来查找了一些API的资料才知道原来用<正则表达式>来实现替换所有字符串!
Replace(“字符串1″, “字符串2″)
JS中字符串替换函数是Replace(“字符串1″, “字符串2″),其意义是用字符串2将字符串1中的字符替换,但是这个函数只能将第一次出现的字符串1替换掉。
那么我们如何才能一次性全部替换掉了?
正则
replace如果替换数据时,默认只替换第一个。如果在替换的时候加上: / 替换内容 /g 就能实现全部替换。
例如:
function change(strvalue){
strvalue = strvalue.replace(/&/g,"&");
strvalue = strvalue.replace(/</g,"<");
strvalue = strvalue.replace(/>/g,">");
strvalue = strvalue.replace(/"/g,"\"");
strvalue = strvalue.replace(/'/g,"'");
return strvalue;
}
strvalue = strvalue.replace(/</g,"<");第一个参数的位置传递为正则表达的转义字符,注意该参数是不加引号的,这是一个容易掉进去的坑!找这个问题找了有个许久!
如果还不是很理解,下面给一个某博主的例子,个人认为比较形象:
var t = '***感**谢**有**你***';
var r = t.replace(/\*/g,''); //\为转义字符 g表示全局
console.log(r) //感谢有你
var t = '***感**谢**有**你***';
var r = t.replace('*','');
console.log(r) //感谢有你
其中,/g表示正则表达中的全局替换,/\表示转义字符,用/也可以。然后在控制台测试一下这两个例子你就体会得更清楚了~
我的应用如: