我用這對一個需要8-20密碼字符長,只有數字,字母和@#$%符號:的preg_match密碼總是錯誤
if (!preg_match('/^(?=.*\d)(?=.*[A-Za-z])[[email protected]#$%]{8, 20}$/', $_POST['password'])) {
$errors[] = true;
$_SESSION['error'] .= '<div class="messages status_red">Password must be 8-20 long, A-Z, 0-9, [email protected]#$% only.</div>';
}
但是不管我符合標準或不符合我仍然返回一個錯誤。
我也沒有看到任何error_reporting消息。
任何想法可能是什麼原因呢?
「只有數字,字母和!@#$%」---這是一個*愚蠢*限制。不要限制用戶在他們的密碼中使用什麼字符 – zerkms 2013-05-13 23:26:08
您需要轉義'$'... [A-Za-z])[0-9A-Za-z!@#\ $%] – 2013-05-13 23:26:21
@Eugen Rieck:字符集中不應該有'$' – zerkms 2013-05-13 23:26:39