语法
str.replace(regexp|substr, newSubStr|function)
参数
-
regexp(pattern)一个RegExp对象或者其字面量。该正则所匹配的内容会被第二个参数的返回值替换掉。
-
substr(pattern)一个要被
newSubStr替换的{{jsxref("String","字符串")}}。其被视为一整个字符串,而不是一个正则表达式。仅仅是第一个匹配会被替换。 -
newSubStr(replacement)用于替换掉第一个参数在原字符串中的匹配部分的 {{jsxref("String", "字符串")}}
-
function(replacement)一个用来创建新子字符串的函数,该函数的返回值将替换掉第一个参数匹配到的结果。
返回值
一个部分或全部匹配由替代模式所取代的新的字符串。
描述
上面语法的含义是说:一共两个参数,但是两个参数可以分别传输不同的类型的值。
可能你看上面BB半天了也没看明白,没关系,我们直接来上代码:
用法
-
基本用法
var x = "abcda"; //两个参数都是字符串 var y = x.replace(\'a\',\'x\');//\'xbcda\' -
进阶用法
var x = "abcda"; //前面参数使用正则,后面使用字符串 var y = x.replace(/a/g,\'x\');//\'xbcdx\' -
复杂用法
var x = \'abcda\'; //前面参数使用正则,后面使用字符串 var y = x.replace(/a/g,function(match){ return match.toUpperCase(); });//\'AbcdA\'
应用场景
这里只讲复杂用法中的应用场景实际使用,比如有个需求:你需要html文件中的标签之间的所有
标签中的字符a替换为字符b。当然如果是正则大神的话就可以跳过这里了,主要以下方式比较容易理解,更适合正则新手。
解决办法:
var allData = "<body>"+\'\r\n\'+
"<div>aaa</div>"+\'\r\n\'+
"<p>aaa</p>"+\'\r\n\'+
"</body>";
allData = allData.replace(/\<body\>([\s\S]*?)\<\/body\>/g, function(match) {
return match.replace(/\<p\>(.*?)\<\/p\>/g, function(match1) {
return match1.replace(/a/g, "b")
})
});
PS:在进行全局的搜索替换时,正则表达式需包含 g 标志。
如果对以上有什么疑问,可以在评论区发表,方便大家进行探讨