你的位置:首页 > Java教程

[Java教程]replace方法第二个参数为函数时,函数的参数的含义


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"));