replace 第二个参数为函数的情况
2017-05-11 12:03
176 查看
replace()方法的第二个参数也可以是一个函数。在只有一个匹配项(即与模式匹配的字符串)的情况下,会向这个函数传递3个参数:模式的匹配项、模式匹配项在字符串中的位置和原始字符串。在正则表达式中定义了多个捕获组的情况下,传递给函数的参数依次是模式的匹配项、第一个捕获组的匹配项、第二个捕获组的匹配项……,但最后两个参数仍然分别是模式的匹配项在字符串中的位置和原始字符串。
例子:
输出结果为:
例子:
//replace函数第二个参数是函数时,每个匹配都调用该函数,它返回的字符串将替换文本使用。 (function(window){ function Fn(str){ this.str = str; } Fn.prototype.format = function(){ console.log("arguments: "); console.log(arguments); //将类数组对象转化为数组 var arg = Array.prototype.slice.call(arguments,0); console.log(arg); return this.str.replace(/\{(\d+)\}/g,function(a,b,c,d){ console.log("a,b,c,d: "); console.log(a); console.log(b); console.log(c); console.log(d); return arg[b-1]||""; }); }; window.Fn = Fn; }(window)); (function(){ var t = new Fn("<p><a href='{1}'>{2}</a><span>{3}</span></p>"); console.log( t.format("http://www.alibaba.com","Alibaba","Welcome")); console.log(NaN !== NaN);//true console.log(NaN == NaN); //false }());
输出结果为:
a,b,c,d: {1} 1 12 <p><a href='{1}'>{2}</a><span>{3}</span></p> a,b,c,d: {2} 2 17 <p><a href='{1}'>{2}</a><span>{3}</span></p> a,b,c,d: {3} 3 30 <p><a href='{1}'>{2}</a><span>{3}</span></p> <p><a href='http://www.alibaba.com'>Alibaba</a><span>Welcome</span></p> true false
相关文章推荐
- replace第二个参数为函数的情况
- JS 关于replace第二个参数是函数
- JS的replace 使用 第二个参数为函数
- js字符串方法replace()的第二个参数为函数讲解
- PHP uniqid()函数可用于生成不重复的唯一标识符,该函数基于微秒级当前时间戳。在高并发或者间隔时长极短(如循环代码)的情况下,会出现大量重复数据。即使使用了第二个参数,也会重复,最好的方案是结
- JavaScript系列:replace()函数(第二个参数为函数)
- javascript replace()第二个参数为函数时的参数用法
- 解读replace的第二个参数为函数
- 总结函数的参数,指针参数及const修饰的情况
- Replace回调函数参数的使用
- SQL中函数 replace 的参数1的数据类型ntext无效的解决方法
- 重构手法47:Replace Parameter with Explicit Methods (以明确函数取代参数)
- 函数参数为数组的情况
- C/C++内存分区情况,函数参数存储方式
- SQL报错“参数数据类型 text 对于 replace 函数的参数 1 无效”
- [Microsoft][ODBC SQL Server Driver][SQl Server]参数数据类型 text 对于 replace 函数的参数 1 无效。
- 在函数中不修改函数传入参数的情况下取到调用程序中的值的方法
- 10.8 replace parameter with methods(以函数取代参数)
- [导入]在编译期不知道参数数目的情况下调用变参数函数
- strcat()函数的第二个参数是整形变量时,如何转换成char *