至少满足三项:

<?php
$str = '!@aaaaBaa';
$reg = '/^(?=.*[a-zA-Z])(?=.*[1-9])(?=.*[\W]).{6,}$/';
preg_match($reg, $str, $matches);
if(!$matches){
    echo '不合法';
}else{
    echo '合法';
}
?>

同时满足四项:

<?php
$str = '!@aaaaBaa';
$reg = '/^(?=.*[a-z])(?=.*[A-Z])(?=.*[1-9])(?=.*[\W]).{6,}$/';
preg_match($reg, $str, $matches);
if(!$matches){
    echo '不合法';
}else{
    echo '合法';
}
?>

解释:

(?=.*[a-zA-Z])  表示后面至少有一个小写字母或大写字母

(?=.*[1-9]) 表示后面要有一位数字

(?=.*[\W]) 表示后面要有一位特殊符号

更多推荐