可能重复:
Regular expression to check if a given password contains at least one number and one letter in c#?
我需要为密码创建正则表达式,具有以下要求:
Min 2 Small char
Min 2 Caps char
最小1特殊字符(!,@,#,$,%,^,&,*,(,),〜)
最小2数字
最小长度为8个字符
任何人都可以为上述规范提供正则表达式吗?
注意:我已经使用不同的逻辑在没有Regex的情况下实现了这一点。但是,正则表达式比手动处理更强大。
答案 0 :(得分:3)
正则表达式并不特别适合此类任务。
你可以解决它,可能使用零宽度断言/环顾四周。但是,在我看来,在验证一些用户选择密码之后,我似乎就是这样。
即使你 想出匹配/不匹配的正则表达式,如果密码与表达式不匹配,你会如何向用户提供有用的反馈?你会说“你输入的密码不符合这五个限制...... ”。如果用户被告知“您的密码必须至少为8个字符”,那会不会更好。
如果您确实验证了某些用户输入,那么我觉得您最好逐个检查每个约束。
答案 1 :(得分:1)
我使用的功能就是这个。
function check_pass_strength($ pwd) {
if( strlen($pwd) > 20 ) {
$error .= "Password too long! <br />";
}
if( strlen($pwd) < 8 ) {
$error .= "Password too short , minimum 8 characters! <br />";
}
if( !preg_match("#[0-9]+#", $pwd) ) {
$error .= "Password must include at least one number! <br />";
}
if( !preg_match("#[a-z]+#", $pwd) ) {
$error .= "Password must include at least one letter! <br />";
}
if( !preg_match("#[A-Z]+#", $pwd) ) {
$error .= "Password must include at least one CAPS! <br />";
}
if( !preg_match("#\W+#", $pwd) ) {
$error .= "Password must include at least one symbol! <br />";
}
if($error){
echo "Password validation failure(your choise is weak):<br /> $error";
return 0;
} else {
return 1;
}
} 你可以根据自己的需要修改它,瞧!!