dotAll s 修饰符
让点可以真正匹配任意单个字符
const reg = /./
console.log(reg.test('5')) // true
console.log(reg.test('x')) // true
console.log(reg.test('\n')) // 换行符 false
console.log(reg.test('\r')) // 回车 false
console.log(reg.test('\u{2028}')) // 行分隔符 false
console.log(reg.test('\u{2029}')) // 段分隔符 false
const reg2 = /./s
console.log(reg2.test('5')) // true
console.log(reg2.test('x')) // true
console.log(reg2.test('\n')) // true
console.log(reg2.test('\r')) // true
console.log(reg2.test('\u{2028}')) // true
console.log(reg2.test('\u{2029}')) // true
g 全局匹配
i 忽略匹配
m 跨行匹配
y 粘性的
u 匹配Unicode
具名组匹配
对日期的匹配测试
const date = /(\d{4})-(\d{2})-(\d{2})/.exec('2020-01-01')
console.log('date', date)
这里group
是没有数据的
通过 ?<>来设置 group的key
const reg = /(?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2})/
console.log(reg.exec('2020-02-01'))\
const groups = reg.exec('2020-02-01').groups
const {year, month, day} = groups
console.log(year, month, day) // 2020 02 01
先行断言&后行断言
const str = 'ecmascript'
console.log('先行断言', str.match(/ecma(?=script)/))
console.log('先行断言, 非', str.match(/ecma(?!script)/))
console.log('后行断言', str.match(/(?<=ecma)script/))
console.log('后行断言,非', str.match(/(?<!ecma)script/))