检查用户在php中使用正则表达式输入的值

时间:2012-11-17 16:34:00

标签: php regex validation

在我的程序php中,我希望用户不输入除字母之外的任何字符 像那样:“dgdh”,“sgfdgdfg”,但他没有输入数字或其他任何东西,如“7657”或“gfd( - ”或“fd54” 我测试了这个功能,但它没有涵盖所有情况:

preg_match("#[^0-9]#",$_POST['chaine'])

我怎样才能实现这一目标,提前谢谢

3 个答案:

答案 0 :(得分:0)

匹配字母(无空格)

preg_match("#^[a-zA-Z]+$#",$_POST['chaine'])

说明:

^         # matches the start of the line
[a-zA-Z]  # matches any letter (upper or lowercase)
+         # means the previous pattern must match at least once
$         # matches the end of the line

使用空格:

preg_match("#^[a-zA-Z ]+$#",$_POST['chaine'])

答案 1 :(得分:0)

两件事。首先,您匹配非数字字符。这显然与字母字符不同。因此,您只需使用[a-zA-Z][a-z]和不区分大小写的修饰符即可。

其次,您只能尝试找到其中一个字符。您没有声明整个字符串由这些组成。所以请改用它:

preg_match("#^[a-z]*$#i",$_POST['chaine'])

答案 2 :(得分:0)

最简单的可以是

preg_match('/^[a-z]+$/i', $_POST['chaine'])

i修饰符用于不区分大小写。 +是至少输入一个字母。如果要允许空字符串,可以将其更改为*。锚^$强制执行整个字符串只是字母表。 (它们分别代表字符串的开头和字符串的结尾)。


如果您想允许空白,可以使用:

仅在字符串的开头或结尾处的空格:

preg_match('/^\s*[a-z]+\s*$/i', $_POST['chaine'])

任何地方:

preg_match('/^[a-z][\sa-z]*$/i', $_POST['chaine'])    // at least one alphabet

只允许使用空格字符,但不允许使用其他空格:

preg_match('/^[a-z][ a-z]*$/i', $_POST['chaine'])