ES6+--》正则扩展_es6 正则扩展

<script>
    // 声明一个字符串
    let str = '<a href="http://www.baidu.com">百度</a>'

    // 提取 url 与 标签文本
    const reg = /<a href="(.*)">(.*)<\/a>/

    // 执行
    const result = reg.exec(str)
    console.log(result);
    console.log(result[1]);
    console.log(result[2]);

    // 设置分组名
    const reg1 = /<a href="(?<url>.*)">(?<test>.*)<\/a>/
    const result1 = reg1.exec(str)
    console.log(result1);
    console.log(result1.groups.url);
    console.log(result1.groups.test);
</script>

反向断言

反向断言前期是没有的,只有正向断言,2018年ES引入反向断言;两者之间的的使用方式一致,例如:正向断言 /\d+(?=%)/ 只匹配百分号前面的数字、反向断言 /(?<=%)\d+/ 只匹配百分号后面的数字;正向否定断言 /\d+(?!%)/ 只匹配不在百分号之前的数字、反向否定断言 /(?<!%)\d+/ 只匹配不在百分号后面的数字。简例如下:

<script>
    // 声明字符串
    let str = 'who123五五五444三三三'
    // 正向断言
    const reg = /\d+(?=三)/ //问号等于号表示数字后面刚好满足的汉字是“三”
    const result = reg.exec(str)
    console.log(result);//444

    // 正向否定断言
    const reg_1 = /\d+(?!三)/ //问号感叹号表示数字数字后面不满足的汉字是“三”
    const result_1 = reg_1.exec(str)
    console.log(result_1);//123

    // 反向断言
    const reg1 = /(?<=五)\d+/  //小于号表示前面,等于号表示满足,即数字前面刚好是汉字“五”
    const result1 = reg1.exec(str)
    console.log(result1);//444
    
    // 反向否定断言
    const reg1_1 = /(?<!五)\d+/ //小于号表示前面,感叹号表示不满足,即数字前面不是汉字“五”
    const result1_1 = reg1_1.exec(str)
    console.log(result1_1);//123
</script>
dotAll模式

在正则表达式中,点( . )是一个特殊的字符,能够匹配除换行符以外的任意单个字符;引入s修饰符,使得 . 可以匹配任意单个字符,这种被称为dotAll模式。通过返回一个布尔值来判断该正则表达式是否处于dotAll模式。

<script>
    const reg = /aaa.bbb/s
    console.log(reg.test('aaa\nbbb'));//true
</script>
y修饰符

y修饰符也叫做“粘连”修饰符,作用与g修饰符类似,也是全局匹配。不同之处在于进行多次匹配时,g修饰符只要在前次匹配后面找到存在匹配即可,而y修饰符必须确保在前次匹配后,从剩余的第一个位置开始。

<script>
    var str = '123_12_1'
    var reg1 = /\d+/g
    var reg2 = /\d+/y

    // 第一次匹配
    console.log(reg1.exec(str));//123
    console.log(reg2.exec(str));//123
    // 第二次匹配
    // 由于g修饰符没有位置要求,所以只要匹配后面符合的即可
    console.log(reg1.exec(str));//12
    // 由于y修饰符有位置要求,所以要从 123后面的下划线 _ 开始,所以返回null
    console.log(reg2.exec(str));//null
</script>

ES6提供了正则实例对象 sticky 属性,表示是否设置了 y 修饰符。

<script>
    var reg = /\d/y
    console.log(reg.sticky);//true
</script>

当然 ES6也为表达式新增了 flags 属性,用来返回正则表达式的修饰符。之前的 ES5 中的 source 属性用来返回 正则表达式的正文。

<script>
    var reg = /\d/y.source //返回表达式正文
    var reg1 = /\d/y.flags  //返回修饰符
    console.log(reg);  // \d
    console.log(reg1); // y
</script>
matchAll()

matchAll()方法可以一次性取出所有匹配,不过它返回的是一个遍历器,而不是数组,因为是遍历器所以可以用 for…of 循环取出;如果遍历器转为数组可以通过使用扩展运算符或者Array.from()方法即可。

<script>
    const string = 'test1test2test3';


![img](https://img-blog.csdnimg.cn/img_convert/e5b1072a4959ec9dc0a609c28c724f2f.png)
![img](https://img-blog.csdnimg.cn/img_convert/3e6e57a65bca063da2294d6d487b1c44.png)
![img](https://img-blog.csdnimg.cn/img_convert/4e5313f892e8f8fd171011d687826764.png)

**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!**

rJoEJw92-4702074208160)]
[外链图片转存中...(img-QAo4ZlBi-4702074208161)]

**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!**

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值