ES9新特性之正则表达式扩展

正则表达式命名捕获组

ES9以前,获取字符串中的某些值,需要这样做

let str = '<a href="http://www.baidu.com">百度</a>'
const reg = /<a href="(.*)">(.*)<\/a>/
let result = reg.exec(str)
console.log(result)

在这里插入图片描述
ES9允许命名捕获组使用符号?<name>,这样获取捕获结果可读性更强

let str = '<a href="http://www.baidu.com">百度</a>'

let reg = /<a href="(?<url>.*)">(?<text>.*)<\/a>/

let result = reg.exec(str)
console.log(result)
console.log(result.groups.url)
console.log(result.groups.text)

在这里插入图片描述

正则表达式反向断言

ES9支持反向断言,使用?<=对目标内容前面的内容进行判断,对匹配进行筛选

let str = 'JS1231234你好啊555哈哈哈'

// 取出555
// 正向断言,对目标内容后面的内容进行判断
// const reg = /\d+(?=哈)/
// const result = reg.exec(str)

// 反向断言
const reg = /(?<=啊)\d+/
const result = reg.exec(str)

在这里插入图片描述

正则表达式 dotAll 模式

正则表达式中.匹配除回车外的任何单字符,标记s会改变这种行为,允许行终止符出现

let str = `<ul>
                <li>
                    <a>肖生克的救赎</a>
                    <p>上映日期:1994-09-10</p>
                </li> 
                <li>
                    <a>阿甘正传</a>
                    <p>上映日期:1994-07-06</p>
                </li> 
           </ul>`

// const reg = /<li>\s+<a>(.*?)<\/a>\s+<p>(.*?)<\/p>\s+<\/li>/g
const reg = /<li>.*?<a>(.*?)<\/a>.*?<p>(.*?)<\/p>/gs;
let result;
let data = []
while (result = reg.exec(str)) {
    data.push({ title: result[1], time: result[2] })
}
console.log(data)

在这里插入图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值