js原本有replace方法,请看w3school的说明:正则表达式
replace() 方法用于在字符串中用一些字符替换另外一些字符,或替换一个与正则表达式匹配的子串。函数
语法:this
stringObject.replace(regexp/substr,replacement)spa
第一个参数为一个字符串或者一个正则表达式,第二个参数为一个字符串或者一个用于生成字符串的函数。prototype
注意重点:code
若是 regexp 具备全局标志 g,那么 replace() 方法将替换全部匹配的子串。不然,它只替换第一个匹配子串。regexp
实例:对象
var str = "dogdogdog"; var str2 = str.replace("dog","cat"); console.log(str2);
这里仅替换第一个dog字符串,输出为:catdogdog。blog
js中是没有replaceAll方法的,那么如何实现替换全部匹配的字符串呢,即在js中实现replaceAll方法:字符串
var str = "dogdogdog"; var str2 = str.replace(/dog/g,"cat"); console.log(str2);
实现替换所有匹配字符串,输出结果为:catcatcat。
var str = "dogdogdog"; var str2 = str.replace(new RegExp("dog","gm"),"cat"); console.log(str2);
输出结果同上例。这里g表示执行全局匹配,m表示执行屡次匹配。
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);
输出结果同上例。我的推荐使用第3种方法。