这是我的密码正则表达式。
((?=.*\\d)(?=.*[a-z])(?=.*[A-Z]).{6,20})
当我输入"cdsafcghiufvcdsfvcdsghfcydsgfcghdysufcdus"
超过20个单词时,它的工作正常
但是当我使用"Akash1AAkash1AAkash1AAkash1AAkash1AAkash1AAkash1AAkash1AAkash1A"
时,它无效。
仅小写或大写它的工作正常,但是当我使用大写时,数字和小写的最大长度不起作用。
我几乎尝试了所有事情,但没有成功。
答案 0 :(得分:2)
密码正则表达式,现在很有趣。
我提交的内容:
^.*(?=.{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 强>
它检查的内容:
不排除的内容:
不检查的内容:
通常在最低级别,假设密码与条件匹配,并且使用此regex
在其中没有字典单词,将确保大多数密码强度测试人员的中位数[45-65]得分,并确保“提供良好的“密码。
回到你的问题
“只对小写或大写它的工作正常,但是当我使用大写时,数字和小写的最大长度不起作用。”
((?=.*\\d)(?=.*[a-z])(?=.*[A-Z]).{6,20})
^ the extra `\` makes it invalid for any pattern.
如果你有一个大写和小写字母至少有一个数字,它将被删除它将匹配。
只有大写或小写或数字不匹配。
目前它将捕获前20个字符,但验证无限制字符。在开头和结尾[分别在第一个和最后一个(&lt; -here和here-&gt;)之间]使用str.matches(regex)
或^
和$
字符,这将限制匹配到6到20之间。
作为旁注,您提供的regex
不会导致您提到的结果,因此请确保regex
是您目前正在使用的正确的结果,因为这是只有这样你才能得到任何有用的反馈。