【问题标题】:Regex for complex Password with upper case, lower case, digit and special characters (Python)带有大写,小写,数字和特殊字符的复杂密码的正则表达式(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测试测试测试

知道如何解决这个问题吗?

提前感谢任何会提供帮助的人!!!

韩国

阿德里亚诺

【问题讨论】:

  • 使用\S{10,20} 代替.{10,20}。注意启动\b会导致!Password123失败。
  • 查看this 最近我回答的关于使用正则表达式进行密码验证的帖子。
  • 另外,您使用的是什么语言?每种语言实现正则表达式的方式不同
  • 谢谢大家,这个似乎工作得很好: (?=.*[AZ])(?=.*[az])(?=.*\d)(?=.*[ !?])\S{10,20} 语言是 python,在标题和请求中都有说明:)

标签: regex


【解决方案1】:

这个正则表达式似乎有效:

(?=\S{10,})(?=\S*[A-Z])(?=\S*[a-z])(?=\S*[0-9])(?=\S*[!£$%^&\"])(?<!\S)\S{10,20}(?=\s|\Z)

可以找到测试here

【讨论】:

  • 请注意,(?=\S{10,}) 部分只是为了减少步数而添加的。
猜你喜欢
  • 2016-07-08
  • 2014-01-29
  • 1970-01-01
  • 2011-01-22
  • 2019-06-05
  • 2021-02-16
  • 2021-10-09
  • 2016-02-13
  • 2022-11-24
相关资源
最近更新 更多