我试图在PHP中为我的密码验证创建一个正则表达式。我想要的不是小写字母,大写字母,数字和符号中的至少2个,而是这三个类别中的至少一个类别,例如," Rose"会工作," Rose456"也会工作,并且" rose456"会工作," Rose456!"也会有用。
非常感谢你!
答案 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/
。但我真的不知道你打算如何使用它。