美文网首页
正则表达式验证密码必须由大小写字母、数字、特殊字符组成

正则表达式验证密码必须由大小写字母、数字、特殊字符组成

作者: 且须文雅 | 来源:发表于2020-01-02 10:48 被阅读0次

    今天老板要求我们网站密码规则必须包含大写字母小写字母,数字和特殊字符,且长度大于8位,30天未登陆锁定账号,35天必须修改密码,且最近12次密码不能相同。

    下面介绍一下我是怎么验证密码复杂度验证的,什么超期锁定,修改密码的,对比一下上次登陆或修改的时间就OK啦。

    密码复杂度验证分两部分,第一部分是验证是否包含四种不同类型的字符,第二部分就是限制长度大于8,下面我们就来实现吧,我们用正则表达式来验证:
    首先,验证是否包含不同类型的字符,我首先想到的是正向肯定预查表达式(?=pattern),这个式子的作用是:

    正向肯定预查,在任何匹配pattern的字符串开始处匹配查找字符串。这是一个非获取匹配,也就是说,该匹配不需要获取供以后使用。例如,“Windows(?=95|98|NT|2000)”能匹配“Windows2000”中的“Windows”,但不能匹配“Windows3.1”中的“Windows”。预查不消耗字符,也就是说,在一个匹配发生后,在最后一次匹配之后立即开始下一次匹配的搜索,而不是从包含预查的字符之后开始。

    由此我们就得到了第一部分的验证表达式:
    /(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])(?=.*[\W_])/
    上面的正则意思是至少要有一个大写字母一个小写字母,一个数字,一个特殊符号,在这里解释一下\W这个表达式,它表示 “匹配任何非单词字符。等价于“[^A-Za-z0-9_]”。可以看到,它是排除了下划线_的,所以我在上面加上了下划线。

    OK,第一部分完成了,剩下验证长度就小菜一碟啦,下面直接给大家写上,就不多做解释了:
    /(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])(?=.*[\W_]).{8,}/

    大功告成,谢谢大家一步步看到这里哦!

    相关文章

      网友评论

          本文标题:正则表达式验证密码必须由大小写字母、数字、特殊字符组成

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