具有大写,小写,数字和特殊字符的复杂密码的正则表达式(Python)

时间:2018-01-18 14:41:30

标签: regex

我第一次在这里发帖,所以如果我做错了,我会道歉。 我已经尝试在现有主题中寻找答案了,但我找不到能为我的案例100%工作的东西。

我基本上需要构建一个符合以下要求的python RegEx:

  • 至少1个大写字符
  • 至少1个小写字符
  • 至少1个数字字符
  • 以下至少1个特殊字符!“££%^&?
  • 空格不能包含在密码中

最小长度应为10个字符,最大长度应为20个。

在以下示例中:

  • 密码!123
  • 密码!123测试测试

我希望在两个示例中匹配“密码!123”,但在第二个示例中,匹配应停止广告“3”,“测试”(或其中的一部分)不应包含在匹配中。

到目前为止,我构建了以下内容:

\b(?=.*[A-Z])(?=.*[a-z])(?=.*\d)(?=.*[!"£$%^&]).{10,20}

但是,根据regexr.com,如果我测试以下内容: 密码!123测试测试

然后我得到了这场比赛

密码!123测试测试

虽然我想有以下

密码!123 测试测试

关于如何解决这个问题的任何想法?

提前感谢任何有帮助的人!!!

KR

阿德

1 个答案:

答案 0 :(得分:1)

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

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

可以找到here

的测试