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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了正则表达式验证密码必须由大小写字母、数字、特殊字符组成相关的知识,希望对你有一定的参考价值。

参考技术A

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

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

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

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

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

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

密码的正则表达式 = 一个数字以及大小写字母和特殊字符但是!开头或结尾没有特殊字符

【中文标题】密码的正则表达式 = 一个数字以及大小写字母和特殊字符但是!开头或结尾没有特殊字符【英文标题】:Regex for password = one number and both lower and uppercase letters and special characters BUT!! no special characters at start or end 【发布时间】:2018-08-15 21:28:30 【问题描述】:

我正在尝试为密码输入中的 html5 模式创建正则表达式。

密码必须至少包含:

1 个大写字母 1 个小写字母 1个号码 1 个特殊字符 8-20 个字符 不得以特殊字符开头或结尾

任何帮助表示赞赏

【问题讨论】:

不要在 HTML 中验证密码。这几乎是你能做到的最糟糕的地方。 只是出于好奇,为什么您的密码不能以特殊字符开头/结尾?这对我来说似乎是真的奇怪的逻辑。 这只是内联验证。服务器端将负责繁重的工作。关于结尾或开头的特殊字符的原因......抱歉没有线索,他们没有告诉我原因。 你和你的团队应该看看Reference - Password Validation。 如果您需要做某种验证客户端只需使用 AJAX 调用您的服务器端验证脚本。无需创建 2 个正则表达式。您现在在 HTML 模式中所做的任何事情都可以撤消,如果您使用 [a-z] 来确保小写字母(大写字母、数字和特殊字符也是如此。添加 logic 不允许密码以特殊字符开头和结尾也会减少潜在密码的数量,从而降低您的系统安全性。您的团队绝对应该重新评估密码策略。 【参考方案1】:

没那么难:

(                   # Start of group
    (?=.*\d)        #   must contain at least one digit
    (?=.*[A-Z])     #   must contain at least one uppercase character
    (?=.*[a-z])     #   must contain at least one lowercase character
    (?=.*\W)        #   must contain at least one special symbol
    \w
       .            #   match anything with previous condition checking
        6,18      #   length is  characters
    \w 
)                   # End of group

一行:

((?=.*\d)(?=.*[A-Z])(?=.*[a-z])(?=.*\W)\w.6,18\w)

如果您不喜欢等于[a-zA-Z0-9_]\w,请将其替换为该组并删除下划线。

不过,我完全支持 ctwheels 的说法。

【讨论】:

以上是关于正则表达式验证密码必须由大小写字母、数字、特殊字符组成的主要内容,如果未能解决你的问题,请参考以下文章

密码的正则表达式必须包含 8 个字符,2 个小写或大写字母和 1 个特殊字符 '*' 5 位数字

密码的正则表达式 = 一个数字以及大小写字母和特殊字符但是!开头或结尾没有特殊字符

如何在 Python 中测试正则表达式密码?

至少一个大写字母、一个小写字母、一个数字或特殊字符的正则表达式

java中的正则表达式问题 怎么验证密码必须由字母 数字或下划线开头,密码可以随便组合

js验证密码的正则表达式