Offer 驾到,掘友接招!我正在参与2022春招打卡活动,点击查看活动详情。
ES系列文章
ES9正则表达式扩展
dotAll
正则表达式中.
匹配除回车外的任何单字符,不能用来匹配多自己的Unicode。标记s
会改变这种行为,允许行终止符出现
// dot www.imooc.com dotAll
// .
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 reg = /./s
console.log(reg.test('5')) // true
console.log(reg.test('x')) // true
console.log(reg.test('\n')) // true
console.log(reg.test('\r')) // true
console.log(reg.test('\u{2028}')) // true
console.log(reg.test('\u{2029}')) // true
// 修饰符: g i m y u s
//es5
// g:全局匹配
// i:忽略大小写
// m:跨行匹配
//es6
// y:粘连
// u:匹配Unicode
// s:daoAll模式.去匹配任意字符
不能匹配行终结符。
具名组匹配
相当于在正则表达式的时候给每一个组匹配一个对于的名字
// 具名组匹配
const date = /(\d{4})-(\d{2})-(\d{2})/.exec('2022-03-22')
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('2022-03-22'))
const groups = reg.exec('2022-03-22').groups
// const year = groups.year
// const month = groups.month
// const day = groups.day
const {year, month, day} = groups
console.log(year, month, day)
后行断言
ES9支持后行断言,使用?<=
对目标内容前面的内容进行判断,对匹配进行筛选
// 先行断言
const str = 'ecmascript'
console.log(str.match(/ecma(?=script)/))
// es9:后行断言
console.log(str.match(/(?<=ecma)script/))
console.log(str.match(/(?<!ecma)script/))
一个前端小白,若文章有错误内容,欢迎大佬指点讨论!