正则表达式验证密码必须由大小写字母、数字、特殊字符组成
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 位数字
密码的正则表达式 = 一个数字以及大小写字母和特殊字符但是!开头或结尾没有特殊字符
至少一个大写字母、一个小写字母、一个数字或特殊字符的正则表达式