带有大写,小写,数字和特殊字符的复杂密码的正则表达式(Python)
Posted
技术标签:
【中文标题】带有大写,小写,数字和特殊字符的复杂密码的正则表达式(Python)【英文标题】:Regex for complex Password with upper case, lower case, digit and special characters (Python) 【发布时间】:2018-06-27 16:13:12 【问题描述】:我第一次在这里发帖,如果我做错了什么,我深表歉意。 我已经尝试在现有主题中寻找答案,但我无法找到对我的案例 100% 有效的东西。
我基本上需要构建一个 python 正则表达式,它将匹配具有以下要求的密码:
至少 1 个大写字符 至少 1 个小写字符 至少 1 个数字字符 以下 !"£$%^&? 之间至少有 1 个特殊字符? 密码中不能包含空格最小长度应为 10 个字符,最大应为 20 个。
在以下示例中:
密码!123 密码!123测试测试测试我希望在两个示例中都匹配“密码!123”,但是在第二个示例中,匹配应该停止到“3”,“测试”(或其中的一部分)不应该包含在匹配中。
到目前为止,我构建了以下内容:
\b(?=.*[A-Z])(?=.*[a-z])(?=.*\d)(?=.*[!"£$%^&]).10,20
但是,根据 regexr.com ,如果我测试以下内容: 密码!123测试测试测试
然后我得到这个匹配
密码!123 test test test
虽然我想要以下内容
密码!123测试测试测试
知道如何解决这个问题吗?
提前感谢任何会提供帮助的人!!!
韩国
阿德里亚诺
【问题讨论】:
使用\S10,20
代替.10,20
。注意启动\b
会导致!Password123
失败。
查看this 最近我回答的关于使用正则表达式进行密码验证的帖子。
另外,您使用的是什么语言?每种语言实现正则表达式的方式不同
使用^(?=\PLl*\pLl)(?=\PLu*\pLu)(?=\PN*\pN)(?=.*[^\pL\pN\pC])\S8,$
谢谢大家,这个似乎工作得很好: (?=.*[AZ])(?=.*[az])(?=.*\d)(?=.*[ !?])\S10,20 语言是 python,在标题和请求中都有说明:)
【参考方案1】:
这个正则表达式似乎有效:
(?=\S10,)(?=\S*[A-Z])(?=\S*[a-z])(?=\S*[0-9])(?=\S*[!£$%^&\"])(?<!\S)\S10,20(?=\s|\Z)
可以找到测试here
【讨论】:
请注意,(?=\S10,)
部分只是为了减少步数而添加的。以上是关于带有大写,小写,数字和特殊字符的复杂密码的正则表达式(Python)的主要内容,如果未能解决你的问题,请参考以下文章
密码的正则表达式必须包含 8 个字符,2 个小写或大写字母和 1 个特殊字符 '*' 5 位数字
至少一个大写字母、一个小写字母、一个数字或特殊字符的正则表达式
正则表达式判断字符串中包含数字、大写字符、小写字母、特殊符号中的几种怎么判断?
密码的正则表达式 = 一个数字以及大小写字母和特殊字符但是!开头或结尾没有特殊字符