js使用正则实现ReplaceAll全部替换的方法
投稿:whsnow
JS 字符串有replace() 方法。但这个方法只会对匹配到的第一个字串替换。
replace() 方法用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串。
语法:
stringObject.replace(regexp/substr,replacement)
第一个参数为一个字符串或者一个正则表达式,第二个参数为一个字符串或者一个用于生成字符串的函数。注意重点:
如果 regexp 具有全局标志 g,那么 replace() 方法将替换所有匹配的子串。否则,它只替换第一个匹配子串。
实例:
var str = "dogdogdog"; var str2 = str.replace("dog","cat"); console.log(str2);
这里仅替换第一个dog字符串,输出为catdogdog。
如下例:
<HTML> <HEAD> <TITLE> New Document </TITLE> </HEAD> <BODY> <script> var str = "wordwordwordword"; var strNew = str.replace("word","Excel"); alert(strNew); </script> </BODY> </HTML>
如果要全部替换的话,JS 没有提供replaceAll这样的方法。使用正则表可以达成Replace 的效果:
str.replace(/word/g,"Excel")
g 的意义是:执行全局匹配(查找所有匹配而非在找到第一个匹配后停止)。
<HEAD> <TITLE> New Document </TITLE> <script> function replaceAll(str) { if(str!=null) str = str.replace(/word/g,"Excel") return str; } </script> </HEAD> <BODY> <script> var str = "wordwordwordword"; var strNew = str.replace("word","Excel"); strNew = replaceAll(str); alert(strNew); </script> </BODY> </HTML>
以上写法有个类同的写法:
str.replace(new RegExp("word","gm"),"Excel")
g 执行全局匹配(查找所有匹配而非在找到第一个匹配后停止)。
m 执行多行匹配。
除此之外,也可以添加 Stirng对象的原型方法:
String.prototype.replaceAll = function(s1,s2){ return this.replace(new RegExp(s1,"gm"),s2); }
这样就可以像使用replace 方法一样使用replaceAll了
str.replaceAll("word","Excel");
总结一下, 四种方式
1. 使用具有全局标志g的正则表达式
var str = "dogdogdog"; var str2 = str.replace(/dog/g,"cat"); console.log(str2);
实现替换全部匹配字符串,输出结果为:catcatcat
。
2. 使用另一种具有全局标志g的正则表达式
var str = "dogdogdog"; var str2 = str.replace(new RegExp("dog","gm"),"cat"); console.log(str2);
输出结果同上例。这里g表示执行全局匹配,m表示执行多次匹配。
3. 给string对象添加原型方法replaceAll()
String.prototype.replaceAll = function(s1, s2) { return this.replace(new RegExp(s1, "gm"), s2); }
这样就可以像使用replace方法一样使用replaceAll方法:
var str = "dogdogdog"; var str2 = str.replaceAll("dog", "cat"); console.log(str2);
输出结果同上例。
4. 使用先split,再join的方法
评论区@默默之分享的这个方法太赞了,拉到正文里以免有人不看评论,感谢@默默之分享。
var str = "dogdogdog"; var str2 = str.split("dog").join("cat") console.log(str2);
输出结果同上例。
PS:关于正则,本站还提供了2款非常简便实用的正则表达式工具供大家使用:
JavaScript正则表达式在线测试工具:http://tools.jb51.net/regex/javascript
正则表达式在线生成工具:http://tools.jb51.net/regex/create_reg
到此这篇关于js使用正则实现ReplaceAll全部替换的方法的文章就介绍到这了,更多相关js ReplaceAll内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
您可能感兴趣的文章:
- javascript中使用replaceAll()函数实现字符替换的方法
- Javascript中正则表达式的全局匹配模式分析
- Javascript中使用exec进行正则表达式全局匹配时的注意事项
- JavaScript实现的字符串replaceAll函数代码分享
- javascript实现全局匹配并替换的方法
- java中replaceAll替换圆括号实例代码
- Java中replace与replaceAll的区别与测试
- java字符串的替换replace、replaceAll、replaceFirst的区别说明
- Java replaceAll()方法报错Illegal group reference的解决办法
- String.replaceAll方法详析(正则妙用)
- 浅谈Java中replace与replaceAll区别
- Java中replace、replaceAll和replaceFirst函数的用法小结
- 浅谈java中replace()和replaceAll()的区别
- jQuery中replaceAll()方法用法实例
- js使用正则实现ReplaceAll全部替换的方法
- JS中实现replaceAll的方法(实例代码)
- js replace 与replaceall实例用法详解
- Flex 字符串ReplaceAll使用说明
- JavaScript中使用replace结合正则实现replaceAll的效果