正则表达式之零宽断言

什么是零宽断言

零宽断言是一种零宽度的匹配,它匹配的内容不会被保存到结果中,它最终匹配的结果只是一个位置而已。

通俗来理解“0宽”就是宽度为0,“断言”是判断的意思。

什么时候用零宽断言

在使用正则表达式时,有时候我们需要捕获的内容前后必须是特定的内容,但又不捕获这些特定内容的时候,零宽断言就起作用了

如何使用:

作用是给指定位置添加一个限定条件,用来规定此位置之前或之后的字符必须满足条件才能使正则表达式匹配成功,

  1. (?=pattern)正向预查
    来看一下例子
<script>
      var str = "ad1abAdgd";
      var arr = str.match(/ab(?=[A-Z])/g);
      if (arr != null) {
      console.log("捕获到ab大写字母外前的ab")
        console.log(arr);
      } else {
        console.log("没有找到大写字母前的ab");
      }
</script>

输出结果
在这里插入图片描述

重点来看一下正则表达式,/ab(?=[A-Z])/这句话是指捕获指定字符串在大写字母前的ab,而大写字母不是要捕获的,这就是上面说的“需要捕获的内容前后必须是特定的内容,但又不捕获这些特定内容”。所以打印出来的结果是下标为3的ab。/(?<=pattern)/也是正向预查,但是这是捕获指定字符串在pattern后的内容,这里就不做过多的介绍。

  1. (?!pattern)反向预查
    还是先来看例子
<script>
      var str = "ad1abAdgd";
      var arr = str.match(/ab(?![a-b])/);
      if (arr != null) {
      console.log("捕获到ab除小写字母外前的ab")
        console.log(arr);
      } else {
        console.log("没有找到除小写字母外前的ab");
      }
</script>

这里的输出结果还是跟上面的一样

我们还是重点来看一下这里的正则表达式,/ab(?![a-b])/这里说的是要捕获字符串里的ab,但有个前提,ab后面跟着是小写字母以外的大写字母、数字、特殊符号等,所以在这个字符串的ab后面跟的是大写字母所以捕获成功。

零宽断言就说到这里,说得不好的,请多多指教------------

东哥笔记

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值