同时我们使用replace进行字符替换,第二个参数传入替换的参数:
"yyyy-MM-dd".replace(/y+/g,"年")
// 年-MM-dd
但,其实replace的第二个参数可以传入一个回调函数
str.replace(ext, function(){})
参数分别为:
- 匹配到的字符串
- 如果正则使用了分组匹配就为多个,否则无此参数
- 匹配字符串的对应索引位置
- 原始字符串
回调函数返回替换的值,如果没有返回,默认为undefined
var str = "yyyy-MM-dd".replace(/(y)+/g, function(a,b,c,d){
console.log(a,b,c,d)
})
// yyyy y 0 yyyy-MM-dd
// str的值为:undefined-MM-dd
"/* 这是一条注释 */".replace(/(\/\*([\s\S]*?)\*\/|([^:]|^)\/\/(.*)$)/mg, function(){
console.log(arguments);
})
结果为:
中间的两个undefined是因为([^:]|^)
和(.*)
没有匹配到内容