密码正则表达式,现在很有趣。
我为您提交的内容:
^.*(?=.{8,})(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[!@#$%^&*()_+\-=\[\]{};':"\\|,.<>\/?]).*$
PHP
$re = '/^.*(?=.{8,})(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[!@#$%^&*()_+\-=\[\]{};\':"\\|,.<>\/?]).*$/mx';
$str = 'nonumbersSOITFAILS\nalllowercasesoitfails\nALLUPPERCASESOITFAILS\n111111111111111111111\n1alllowercasesoitfails\nALLUPPERCASESOITFAILS1\n1Aa%\n1%UPPERCASElowercasenumberandspecialcharacter\n1%UPPERCASElowercase spacetoo\n\n\n';
preg_match_all($re, $str, $matches);
JAVASCRIPT
var re = /^.*(?=.{8,})(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[!@#$%^&*()_+\-=\[\]{};':"\\|,.<>\/?]).*$/gmx;
var str = 'nonumbersSOITFAILS\nalllowercasesoitfails\nALLUPPERCASESOITFAILS\n111111111111111111111\n1alllowercasesoitfails\nALLUPPERCASESOITFAILS1\n1Aa%\n1%UPPERCASElowercasenumberandspecialcharacter\n1%UPPERCASElowercase spacetoo\n\n\n';
var m;
while ((m = re.exec(str)) != null) {
if (m.index === re.lastIndex) {
re.lastIndex++;
}
// View your result using the m-variable.
// eg m[0] etc.
}
Python
textpop-up
import re
p = re.compile(r'^.*(?=.{8,})(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[!@#$%^&*()_+\-=\[\]{};\':"\\|,.<>\/?]).*$', re.MULTILINE | re.VERBOSE)
str = "nonumbersSOITFAILS\nalllowercasesoitfails\nALLUPPERCASESOITFAILS\n111111111111111111111\n1alllowercasesoitfails\nALLUPPERCASESOITFAILS1\n1Aa%\n1%UPPERCASElowercasenumberandspecialcharacter\n1%UPPERCASElowercase spacetoo\n\n\n"
re.findAll(p, str)
REGEX101
检查内容:
- 最少 8 个字符
- 至少一个数字 (0-9)
- 至少 1 个小写字母 (a-z)
- 至少一个大写字母 (A-Z)
- 至少 1 个特殊字符 (!@#$%^&*()_+-=[]{};':"\|,.>/?)
不排除的内容:
- 空格(通常允许在密码中使用)
- 最大字符数(轻松更改)
- 可能我错过了什么
不检查的内容:
- 中间的数字或符号
- 重复字符(不区分大小写)
- 连续大写字母
- 连续小写字母
- 连续的数字
- 连续字母
- 序号
- 顺序符号
- 字典词
- 音节
通常在最低级别,假设密码与条件匹配并且其中没有字典单词,使用此regex 将确保大多数密码强度测试人员的中位数 [45-65] 得分,并确保“良好”已提供密码。
回到你的问题
“只有小写或大写的工作正常,但当我使用大写、数字和最大长度的小写时,它不起作用。”
((?=.*\\d)(?=.*[a-z])(?=.*[A-Z]).{6,20})
^ the extra `\` makes it invalid for any pattern.
如果您的大写和小写字母至少有一个数字,则将其删除。
只有大写或小写或数字不匹配。
目前它将捕获前 20 个字符,但验证无限个字符。在开头和结尾使用str.matches(regex) 或^ 和$ 字符[分别在第一个和最后一个()之间],它将限制匹配在6到20之间。
作为旁注,您提供的regex不会导致您提到的结果,因此请确保regex 是您将来正在使用的确切结果,因为这是您唯一的方式会得到任何有用的反馈。