javascript中替换字符串的方法是replace函数,但在网站开发的过程中使用时却发现该函数只会替换第一个被匹配的字符,而不能像PHP的replace一样实现全局匹配并替换。 例: <script type="text/javascript"> var str = 'php! I love php'; str = str.replace('php', 'codetc'); alert(str); </script>
上例输出的结果为: codetc! I love php
其实 replace 本身也可以实现这种功能的,但需要通过借助 RegExp 对象实现。 这里我们只需要全局匹配替换指定的字符串的话,大可不必用到正则表达式,pattern的值直接指定目标字符串就行,但如果要实现正则匹配,那则需要把pattern指定为正则匹配规则,关于正则表达式的基本语法可以参考php正则表达式以及正则函数的使用 使用RegExp后,上面的例子可以变成: <script type="text/javascript"> var str = 'php! I love php'; str = str.replace(new RegExp('php','g'), 'codetc'); //str = str.replace(/php/g, 'codetc'); //效果相同 alert(str); </script>输出的结果为:codetc! I love codetc 这个结果已经达到我们的目标了,相当简单是吧,为了使用更方便,我们可以自己扩展js函数库,自创函数replaceall方法实现全局匹配并替换的功能。 String.prototype.replaceall=function(s1,s2){ return this.replace(new RegExp(s1,"gm"),s2); }最后,我们可以直接使用 str.replaceall('php', 'codetc')就可以了
文章来源 CODETC,欢迎分享,转载请注明地址:
http://www.codetc.com/article-127-1.html
|