如何为密码创建正则表达式至少包含以下1个:小写字母,大写字母,数字

时间:2014-05-15 17:35:07

标签: php regex passwords

我试图在PHP中为我的密码验证创建一个正则表达式。我想要的不是小写字母,大写字母,数字和符号中的至少2个,而是这三个类别中的至少一个类别,例如," Rose"会工作," Rose456"也会工作,并且" rose456"会工作," Rose456!"也会有用。

非常感谢你!

2 个答案:

答案 0 :(得分:1)

单独验证个人密码要求比创建单个 uber-expression 以一次验证所有内容要简单得多。

if(
  // mandatory matches
  strlen($password) > $minlength   &&     // enforce length
  preg_match('/[a-z]/', $password) &&     // contains lowercase
  preg_match('/[A-Z]/', $password) &&     // contains uppercase
) {
    $passed_count = 0;
    if( preg_match('/[0-9]/', $password) ) { $passed_count++; }  // contains digit
    if( preg_match('/[^a-zA-Z0-9]/', $password) ) { $passed_count++; }  // contains symbol
    if( $passed_count > $min_passed ) {
        // valid password
    }
}
编辑

以说明强制/可选检查

答案 1 :(得分:0)

那么......你想要一个小写字母,一个大写字母或一个数字?在这种情况下,/[a-zA-Z0-9]/就足够了。如果您还包含下划线,您甚至可以/\w/。但我真的不知道你打算如何使用它。