1、test也能捕获(本意是匹配)
let str = "{0}年{1}月{2}日";
let reg = /\{(\d+)\}/g
console.log(reg.test(str)) // true
console.log(RegExp.$1) // 0
console.log(reg.test(str)) // true
console.log(RegExp.$1) // 1
console.log(reg.test(str)) // true
console.log(RegExp.$1) // 2
console.log(reg.test(str)) // false
console.log(RegExp.$1) // 2 如果不匹配储存的是上次捕获的结果;
RegExp.$1~RegExp.$9 // 获取当前本次匹配后,第一个到第九个分组信息;如果只有一个分组那么只有RegExp.$1有值,
两个分组RegExp.$1和RegExp.$2有值,以此类推;
这个方法一般不用
2、replace()
let str = "2019-10-21"
let reg = /^(\d{4})-(\d{1,2})-(\d{1,2})$/
str = str.replace(reg,function (...arg){
let [,$1,$2,$3] = arg
console.log($1,$2,$3) // 2019 10 21
return $1+"年"+$2+"月"+$3+"日"
})
console.log(str)
// replace函数的用法:
1、首先是拿replace和str 字符串进行匹配捕获,匹配了几次,回调函数就执行几次(分组捕获捕获了很多组,但是只匹配了一次);
2、replace方法不仅进行了捕获,还传递了捕获的结果信息(第一个参数:大正则匹配的内容,第二个参数:每个小分组的内容);
3、replace方法的返回值就是回调函数中return的值,如果不return则返回值为undefined;