1

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

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

我怎样才能做到这一点,提前谢谢你

4

3 回答 3

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'])
于 2012-11-17T16:36:42.477 回答
0

两件事情。首先,您匹配非数字字符。这显然与字母字符不同。所以你可以简单地使用[a-zA-Z]or[a-z]和不区分大小写的修饰符。

其次,您只尝试找到其中一个字符。您不会断言整个字符串是由这些组成的。所以改用这个:

preg_match("#^[a-z]*$#i",$_POST['chaine'])
于 2012-11-17T16:37:13.780 回答
0

最简单的可以是

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

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


如果你想允许 whitespace,你可以使用:

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

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'])
于 2012-11-17T16:39:22.603 回答