我试图在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/
,如果你包含下划线的话。但是我看不出你打算怎么用这个