Regex密码复杂性要求在创建或更改密码时必须应用以下四个特征中的any three
。
- 字母字符-至少1个大写字母字符
- 字母字符-至少1个小写字母字符
- 数字字符-至少1个数字字符
- 特殊字符-至少1个特殊字符
我正在尝试使用以下代码,但它不适用于special characters
(?=^.{6,}$)((?=.*\d)(?=.*[A-Z])(?=.*[a-z])|(?=.*\d)(?=.*[^A-Za-z0-9])(?=.*[a-z])|(?=.*[^A-Za-z0-9])(?=.*[A-Z])(?=.*[a-z])|(?=.*\d)(?=.*[A-Z])(?=.*[^A-Za-z0-9]))^.*
字符串
我希望我的正则表达式针对以下4种情况进行验证
匹配案例
- P@ sword
- Password1
- p@ssword1
- 联系电话:0531 - 8888888
7条答案
按热度按时间fwzugrvs1#
我认为你可以使用的正则表达式是:
字符串
我不知道为什么你的正则表达式中有这么多的or运算符,但如果:
(?=^.{6,}$)
-字符串大于5个字符(?=.*[0-9])
-包含数字(?=.*[A-Z])
-包含小写字母(?=.*[a-z])
-包含小写字母(?=.*[^A-Za-z0-9])
-不是字母数字的字符。x1c 0d1x的数据
avwztpqn2#
我认为在这种情况下,单个正则表达式会很混乱。
字符串
v2g6jxz63#
使用Regex:
*(?=^.{6,10}$)(?=.\d)(?=. [a-z])(?=.[A-Z])(?=.[!@#$%^&*()_+}{":?/>.<,])(?!.\s).$
wf82jlnq4#
我想你也需要这个来处理所有的特殊字符:[更新为拒绝空格]
字符串
小提琴:jsFiddle
eivnm1vs5#
字符串
它的工作也很好,有特殊的性格。
ssm49v7z6#
非英文UTF-8
没有一个解决方案允许国际字母,即éÉöÖæá,但主要集中在英语
ASCII
字母表上。下面的regEx使用Unicode,UTF-8,来识别大小写,因此允许国际字符:
字符串
regEx:
/^(?=.*\p{Ll})(?=.*\p{Lu})(?=.*[\d|@#$!%*?&])[\p{L}\d@#$!%*?&]{6,36}$/gmu
个检查密码中是否使用了字母、数字、数字或@#$!%*?&。它还限制长度为最小6个字符,最大36个字符(请注意,表情符号,在长度中计为多个字符)。最后的
u
,用于使用UTF-8。😀🇺🇸🇪🇸🧑💻s71maibg7#
要匹配特殊字符,只需列出lookahead中的所有特殊字符。参见下面的代码。
字符串
或者,假设你的正则表达式模式已经像模式3那样搜索数字和字母,唯一不匹配的是非数字,这是你的特殊字符。因此你也可以找到非数字字符的匹配!像模式4一样。
型
有关语法或前瞻的详细解释,您可以阅读下面的文章。
https://medium.com/p/19fc2b2a299c