原文地址: https://www.jianshu.com/p/c6b5901b28ca
1. 简单的定义:一个<没有宽度>位置,这个位置满足一定条件<断言>
2. 为了方便理解,看下面例子:
正则<用于密码设置>:^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{8,20}$
-
说明:匹配8~20位由0-9A-Za-z构成的字符(必须包含数字和字母)
-
下面解释步骤(index是int表示匹配的下标),从左到右:
-
^ 匹配开始(index = 0)
-
(?![0-9]+$) 这是一个负向零宽断言,不能以<全是数字和结尾>构成结尾的字符,从index=0往后匹配,像123456789这样的就不合法了,而像12345678a, abcdefg可以匹配
-
(?![a-zA-Z]+$) 这是一个负向零宽断言,不能以<字符和结尾>构成结尾的字符,仍然从index=0往后匹配,零宽断言的特点就是,匹配的位置不会被消费,index不会往后增加(满足条件即可)
-
[0-9A-Za-z]{8,20} 如果已经满足前面两个零宽断言,就说明从index=0开始到结束已经满足不全是(0-9),(a-zA-Z)的字符串了,这下再匹配index=0开始到结尾8~20位0-9A-Za-z
-
$ 匹配结束
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!