【发布时间】: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