如何检查$ _POST ['input']是否只包含允许的字符

Jac*_*sen -1 php validation input

如何检查,如果输入仅包含一个或多个,这些允许的字符中的一个: a-z,A-Z,0-9

所以我的支票看起来像这样:

if ($_POST ['input'] != 'a-z, A-Z, 0-9') {
exit;
}
else {
//do stuff
Run Code Online (Sandbox Code Playgroud)

Nic*_*ick 6

您可以使用它preg_match来测试输入数据.如果您想要每个字符集中的至少一个,则可以使用

if (preg_match('/(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])/', $_POST['input'])) {
    // do stuff
}
Run Code Online (Sandbox Code Playgroud)

(这个正则表达式使用3个正向前瞻,以确保三个集合中的每一个都有一个字符)

如果您只想要整个集合中的一个或多个,则可以使用

if (preg_match('/[a-zA-Z0-9]/', $_POST['input']))
Run Code Online (Sandbox Code Playgroud)

如果你想让所有角色都在那个集合中,你可以使用

if (preg_match('/^[a-zA-Z0-9]+$/', $_POST['input']))
Run Code Online (Sandbox Code Playgroud)

我在3v4l.org上对每个正则表达式进行了一些演示

请注意,只要您想要两者A-Za-z集合,就可以通过i在正则表达式上使用修饰符来简化后两个正则表达式(不区分大小写):

if (preg_match('/[A-Z0-9]/i', $_POST['input']))

if (preg_match('/^[A-Z0-9]+$/i', $_POST['input']))
Run Code Online (Sandbox Code Playgroud)

  • @mickmackusa肯定适用于第三种选择(所有字符都需要字母数字).OP原始问题只询问至少一个,所以它不适合. (2认同)