美文网首页
正则-零宽断言

正则-零宽断言

作者: craig_wang | 来源:发表于2017-10-16 15:31 被阅读21次

这里记录下,我在初学时如何理解零宽断言(初学时,没人指导很容易想不明白)


1. 简单的定义:一个<没有宽度>位置,这个位置满足一定条件<断言>

2. 为了方便理解,看下面例子:

正则<用于密码设置>:^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{8,20}$

  • 说明:匹配8~20位由0-9A-Za-z构成的字符(必须包含数字和字母)

  • 下面解释步骤(index是int表示匹配的下标),从左到右:

  1. ^ 匹配开始(index = 0)

  2. (?![0-9]+$) 这是一个负向零宽断言,不能以<全是数字和结尾>构成结尾的字符,从index=0往后匹配,像123456789这样的就不合法了,而像12345678a, abcdefg可以匹配

  3. (?![a-zA-Z]+$) 这是一个负向零宽断言,不能以<字符和结尾>构成结尾的字符,仍然从index=0往后匹配,零宽断言的特点就是,匹配的位置不会被消费,index不会往后增加(满足条件即可)

  4. [0-9A-Za-z]{8,20} 如果已经满足前面两个零宽断言,就说明从index=0开始到结束已经满足不全是(0-9),(a-zA-Z)的字符串了,这下再匹配index=0开始到结尾8~20位0-9A-Za-z

  5. $ 匹配结束

相关文章

  • Java学习笔记 - 第026天

    每日要点 正则表达式 例子1:零宽正向先行断言、零宽负向先行断言、零宽正向后行断言、零宽负向后行断言 异常 自定义...

  • CocosCreator3.x开发笔记8: Invalid re

    在iOS下运行报错,是因为正则不支持 因为ios不支持零宽断言 什么是零宽断言? 粗略总结:零宽断言是正则表达式中...

  • 正则-零宽断言

    这里记录下,我在初学时如何理解零宽断言(初学时,没人指导很容易想不明白) 1. 简单的定义:一个<没有宽度>位置,...

  • 浅谈正则表达式(中)

    本节我们继续接着浅谈正则表达式(上)来讲正则表达式的其他使用。 零宽断言 断言:俗话的断言就是“我断定什么什么”,...

  • 正则表达式 学习

    参考:正则表达式30分钟入门教程 元字符 字符转义 分枝条件 分组 向后引用 零宽断言 负向零宽断言 贪婪和懒惰 ...

  • 微信小程序注意点

    1)iOS的Safari浏览器正则不支持零宽后行断言,即:?<=, ?

  • 正则表达式的先行断言(lookahead)和后行断言(lookb

    正则表达式的先行断言和后行断言一共有4种形式:(?=pattern) 零宽正向先行断言(zero-width po...

  • 关于正则的零宽断言

    不以gif或者jpg结尾.*(?

  • Python 正则笔记--零宽断言

    零宽断言正如它的名字一样,是一种零宽度的匹配,它匹配到的内容不会保存到匹配结果中去,最终匹配结果只是一个位置(并不...

  • 两个正则小技巧

    最近在解……算了。两个用到的正则记录一下: 1,删除未匹配的行(负向零宽断言):·^(?!expression)(...

网友评论

      本文标题:正则-零宽断言

      本文链接:https://www.haomeiwen.com/subject/vkokuxtx.html