带有大写,小写,数字和特殊字符的复杂密码的正则表达式(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 位数字

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

正则表达式判断字符串中包含数字、大写字符、小写字母、特殊符号中的几种怎么判断?

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

js密码正则表达式:要求包含大小写字母、数字和特殊符号,8~16位

js密码正则表达式:要求包含大小写字母、数字和特殊符号,8~16位