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


How to create regex for passwords contain at least 1 of the following: lowercase letters, uppercase letters, numbers

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

非常感谢!

单独验证单个密码要求比创建单个超级表达式一次性验证所有内容要简单得多。

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
    }
}

编辑说明强制/可选检查

所以…您想要小写字母、大写字母还是数字?在这种情况下,/[a-zA-Z0-9]/就足够了。你甚至可以用/'w/,如果你包含下划线的话。但是我看不出你打算怎么用这个