var a="abcd1234efg456xy";console.log("%c======无分组======","font-size:16px;color:red");var b=a.replace(/\w/g,function(str,index){ //正则表达式无分组 //参数1是匹配到的字符串 //参数3是匹配的字符串的起始位置索引 console.log("字符:"+str+"||索引:"+index); return str;});console.log("%c======一个分组======","font-size:16px;color:red");var c=a.replace(/\d([a-z]+)/g,function(str,word,index){ //一个捕获型分组 //参数1是匹配到的整个字符串 //参数2是分组匹配到的字符串 //参数3是分组匹配的字符串的起始位置索引 console.log("字符串:"+str+"||分组1匹配的字符:"+word+"||索引"+index); return word;});console.log("%c======多个个分组======","font-size:16px;color:red");var d=a.replace(/\d([a-z]+)(\d+)/g,function(str,word1,word2,index){ //多个捕获型分组 //参数1是匹配到的整个字符串 //参数2是分组1匹配到的字符串 //参数3是分组2匹配到的字符串 //参数4是分组匹配的字符串的起始位置索引 console.log("字符串:"+str+"||分组1匹配的字符:"+word1+"||分组2匹配到的字符:"+word2+"||索引:"+index);});
总结:当replace的第一个参数是正则表达式的时候,第二个参数为函数,此时函数的第一个参数表示匹配到的整个字符,最后一个参数表示每个分组匹配到的字符串的首字符的索引,中间的参数有0到n(捕获型分组个数)个,表示分组匹配到的字符串。
应用:jQuery中把“background-color”转换成驼峰写法"backgroundColor"
var rdashAlpha = /-([\da-z])/gi, rmsPrefix = /^-ms-/, fcamelCase = function( all, letter ) { return ( letter + "" ).toUpperCase(); } var obj={ camelCase: function( string ) { return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase); } } var toCamelCase=obj.camelCase; console.log(toCamelCase("background-color"));
原标题:replace方法第二个参数为函数时,函数的参数的含义
关键词:函数