regex验证密码格式是否正确

Regex Password Validation
python正则表达式验证密码格式是否正确

要求:

  • 包含大写字母
  • 包含小写字母
  • 包含数字
  • 长度至少六位

参考答案:

regex=r"^(?=.*[\d])(?=.*[A-Z])(?=.*[a-z])[a-zA-Z\d]{6,}$"

注意 前瞻搜索(?=)是不占字符的,即:
I (?=am) Alice.
解析字符串 I am Alice时,
结果为 null
因为前瞻搜索不占用字符,即它确保am前面有个I,但是它不会消耗这个am,
而am Alice与 Alice不匹配

r"^(?=.*[\d])(?=.*[A-Z])(?=.*[a-z])[a-zA-Z\d]{6,}$"

比如 解析字符串:Alice001
(?=.*[a-z])前面要有^(?=.*[\d])(?=.*[A-Z])
(?=.*[A-Z])前面要有^(?=.*[\d])
^匹配开头,即开头需要是(?=.*[\d])
(?=.*[\d])Alice001相符,但是(?=.*[\d])不会消耗掉Alice001,后面的匹配依然从Alice001'A'开始,(?=.*[\d])的作用是确保字符串里面一定会有一个数字
同理(?=.*[A-Z])(?=.*[a-z])分别确保有大写和小写字母
真正消耗字符的是[a-zA-Z\d]{6,},它消耗掉Alice001,且确保字符串长度至少为6

$表示以(?=.*[\d])(?=.*[A-Z])(?=.*[a-z])[a-zA-Z\d]{6,}结尾,
即如果字符串是a112fjd3IR9.;,它将不匹配,因为它是以;结尾的,
如果不加$符号,那么
r"^(?=.*[\d])(?=.*[A-Z])(?=.*[a-z])[a-zA-Z\d]{6,}" 匹配 a112fjd3IR9.;会成功,结果是a112fjd3IR9,这就不符合题目要求了,所以开头需要^,结尾需要$

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值