js中replace第二个参数使用function,中的参数分析

js中replace函数中的第一个参数是要替换的值,第二个为要替换成的值。
var re = /\d{1,3}(?=(\d{3})+$)/g;
var n1 = n.replace(/^(\d+)((\.\d+)?)$/, function (s, s1, s2) { return s1.replace(re,"$&,"); alert(s + "|" + s1 + "|" + s2); });

第一个参数是要匹配的参数,即s=n;第二个参数是(\d+)匹配的值,即s1 等于/^(\d+)((\.\d+)?)$/正则中的$1,第三个参数s2为((\.\d+)?)为/^(\d+)((\.\d+)?)$/正则中的$2;

javascript手册中对resplace的讲解,stringObj.replace(rgExp, replaceText)。
replace() 方法的参数 replaceText可以是函数而不是字符串。在这种情况下,每个匹配都调用该函数,它返回的字符串将作为替换文本使用。该函数的第一个参数是匹配模式的字符串。接下来的参数 是与模式中的子表达式匹配的字符串,可以有 0 个或多个这样的参数。也就是说S1之后的所有参数,都是$1+1,

例:

var projectname = "万科四季花城[龙岗区]";
var re = new RegExp(/\[(\S+)\]/i);
console.log(projectname.replace(re, function (s, s1) {

return "("+s1+")";
}));

posted @ 2011-11-23 16:56  谭客  阅读(622)  评论(0编辑  收藏  举报