美文网首页
正则表达式?: ?!理解

正则表达式?: ?!理解

作者: 愤怒的老照 | 来源:发表于2020-05-24 18:46 被阅读0次

    官网定义:

    image.png

    前瞻后顾

    要理解正则中的这几个用法,就需要用到前瞻、后顾、负前瞻、负后顾四个概念。
    我理解这里说的前瞻和后顾不是相对于句子来说的,而是相当于正则解释器来说的,前瞻就是解释器还没有解释到的地方,后顾就是解释器已经处理的地方。

    说明

    • 前瞻: exp1(?=exp2) 查找exp2前面的exp1
    • 后顾: (?<=exp2)exp1 查找exp2后面的exp1
    • 负前瞻: exp1(?=exp2) 查找后面不是exp2的exp1
    • 负后顾: (?<=exp2)exp1 查找前面不是exp2的exp1

    例子

    1、用户名格式要求,满足个数是2-20,同时包含数字和字符,并且不包含特殊字符
    "^(?!.*[@])(?!\\s*$)(?!_)(?!.*?_$)[a-zA-Z0-9_\u4e00-\u9fa5]{2,20}$
    2、密码格式要求,不能为纯数字且不能包含特殊符号
    ^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{6,16}$
    3、字符串ABA、CBC、DBD

    • 想要匹配ABA中的B,需要前瞻后顾,(?<=A)B(?=A)
    • 想要除了ABA中的B,需要负前瞻和负后顾(?<!A)B(?!A)

    相关文章

      网友评论

          本文标题:正则表达式?: ?!理解

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