我用这对一个需要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