在我的程序php中,我希望用户不输入除字母之外的任何字符 像那样:“dgdh”,“sgfdgdfg”,但他没有输入数字或其他任何东西,如“7657”或“gfd( - ”或“fd54” 我测试了这个功能,但它没有涵盖所有情况:
preg_match("#[^0-9]#",$_POST['chaine'])
我怎样才能实现这一目标,提前谢谢
答案 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'])