密码的正则表达式

时间:2011-08-04 08:52:16

标签: c# .net regex

  

可能重复:
  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的情况下实现了这一点。但是,正则表达式比手动处理更强大。

2 个答案:

答案 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;
}

} 你可以根据自己的需要修改它,瞧!!