如何检查输入是否仅包含一个或多个以下允许的字符之一:
a-z
,A-Z
,0-9
所以我的支票必须看起来像这样:
if ($_POST ['input'] != 'a-z, A-Z, 0-9') {
exit;
}
else {
//do stuff
答案 0 :(得分:5)
您可以使用preg_match
测试您的输入数据。如果您想要至少每个这些字符集之一,则可以使用
if (preg_match('/(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])/', $_POST['input'])) {
// do stuff
}
(此正则表达式使用3个正向先行字符以确保三个集合中的每个集合都有一个字符)
如果您只想要整个集合中的一个或多个,则可以使用
if (preg_match('/[a-zA-Z0-9]/', $_POST['input']))
如果希望所有字符包含在该集合中,则可以使用
if (preg_match('/^[a-zA-Z0-9]+$/', $_POST['input']))
我在3v4l.org
上演示了每个正则表达式请注意,只要您同时需要A-Z
和a-z
集,就可以通过使用正则表达式上的i
修饰符来简化后两个正则表达式(不区分大小写):< / p>
if (preg_match('/[A-Z0-9]/i', $_POST['input']))
if (preg_match('/^[A-Z0-9]+$/i', $_POST['input']))
答案 1 :(得分:1)
您只需使用preg_match()
即可获得所需的结果,例如:
<?php
$string = 'Mike123'; // string
if(preg_match("/^[a-zA-Z0-9]+$/", $string)) {
echo 'do nothing';
}
else{
echo 'do something';
}
?>
编辑: 简短说明:由于OP已接受正确且完整的答案,因此我正在修改我对未来访客的回答。
您还可以使用ctype_alnum()
方法来获得所需的结果,该方法用于检查字符串中的字母数字字符。
示例:
<?php
$string = 'Mike123';
if (ctype_alnum($string)) {
echo "do nothing";
} else {
echo "do something";
}
?>