dotAll 具名组匹配 后行断言
// .
const reg = /./
console.log(reg.test('5')) // true
console.log(reg.test('\n')) // false
console.log(reg.test('\r')) // false
console.log(reg.test('\r{2018}')) // false
// dotAll 模式 在/./后面加一个s
const reg = /./s
console.log(reg.test('5')) // true
console.log(reg.test('\n')) // true
console.log(reg.test('\r')) // true
console.log(reg.test('\r{2018}')) // true
// g groups全局的意思 i 忽略的意思 m 跨行匹配 y 粘性的 u 匹配unicode s dotAll可以匹配任意单个字符
具名组匹配
const date = /(\d{4}-(\d{2}-(\d{2})})).exet(20291010)/
console.log(date)
console.log(date[1])
console.log(date[2])
console.log(date[3])
// 可以为每个组起一个名字,这样在下面引用的时候也非常的方便
const reg = /(?<year>\d{4}-(?<month>\d{2})-(?<day>\d{2}))
// console.log(reg.exec('2023-07-04'))
const groups = reg.exec('2023-07-04').groups
// const year = groups.year
// const month = groups.month
// const day = groups.day
// console.log(year, month, day)
// 转换成解构赋值的方法写
const {year, month, day} = groups
console.log(year, month, day)
// 先行断言 先匹配前面的在往后查找是不是对应的内容
const str = 'ecmascript'
console.log(str.match(/ecma(?=script)/))
//es9 后行断言 先匹配后面的内容在往前查找是不是对应的内容
console.log(str.match(/(?<=ecma)script))