超好用的正则表达式在线测试工具,以及关于正则表达式中零宽断言的理解

关于正则表达式各种字符的含义运用可见菜鸟教程 点击看文档

  • 测试工具分享https://regex101.com/
    基本的快速判断表达式是否合法不用多做说明
    亮点示例:匹配邮箱格式的字符串,表达式的关联部分高亮,并且hover在上面可以看到各处字符的用途
    更棒的是右侧有详细解析,分析该正则表达式!
    在这里插入图片描述
  • 帮助理解正则表达式的路线图生成工具:https://regexper.com/
    在这里插入图片描述

关于 肯定|否定预查(零宽断言)

零宽断言表示的只是匹配的位置

基本用法
  • /(?=bar)/ 预查(零宽断言)右侧紧跟’bar’
    在这里插入图片描述
  • /(?!a)/ 断言位置右侧不紧跟’a’
    在这里插入图片描述
  • /(?<=bar)/ 断言的位置的左边紧跟’bar’
    在这里插入图片描述
  • /(?<!a)/ 断言的某个位置左边不紧跟’a’
    在这里插入图片描述
    详细说明
    该说明转载自https://www.cnblogs.com/chip/p/4278135.html
其实^ $ \b都是零宽断言的特殊形式

将它们化为一般形式(?=XXX)如下
^ === (?<!.) 表示在开始断言
$ === (?!.) 表示在结尾断言
\b === (?=\w)(?<!\w)|(?<=\w)(?!\w) 单词边界,表示预查每个英文单词

实践例子:密码规则匹配

规则:
密码长度为8-10
允许出现任何字符,但是其中必须含有:至少1个数字、至少1个小写字母、至少1个大写字母

表达式 :/^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,10}$/
如下图,通过工具可以把表达式的关联字符及大致用意直接在工具中读出来。
在这里插入图片描述
这个表达式通过^.{8,10}$限定了密码长度(匹配8至10次,尽可能多地匹配,并根据需要返回)
其中有三个正向先行断言(positive lookahead)
每个正向先行断言中都存在贪婪匹配 .* 表示匹配条件字符出现为1次或多次
再以(?=.*\d)为例子某位置右侧含有若干数字的都会进行匹配。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值