关于replace()方法的第二个参数
第一种情况是直接传入替换后的字符串,这个就不多说了。
第二种情况是传入一个回调函数,正则表达式匹配到几个结果就会执行几次回调,函数内arguments对象存放着匹配项,函数返回值是要改变后的值。看代码
var str='讨论一下正则表达式中的replace的用法';
str.replace(/(正则).+?(式)/,function() {
console.log(arguments);
});
// ["正则表达式", "正则", "式", 4, "讨论一下正则表达式中的replace的用法"]
str.replace(/(正则).+?(式)/g,function() {
console.log(arguments);
});
// ["正则表达式", "正则", "式", 4, "讨论一下正则表达式中的replace的正则表达式用法"]
// ["正则表达式", "正则", "式", 19, "讨论一下正则表达式中的replace的正则表达式用法"]
实际应用
var str = '20180502';
var arr = ['零','壹','贰','叁','肆','伍','陆','柒','捌','玖'];
str = str.replace(/\d/g, function(){
return arr[Number(arguments[0])]
})
console.log(str)
//贰零壹捌零伍零贰
参考文章地址