2014-04-21 143 views
0

下面的代码显示了一个简单的方法来检查名称字段是否只包含字母和空白。如果名称字段的值是无效的,那么存储的错误消息:preg_match模式检查条只包含字母,空格和点

$name = test_input($_POST["name"]); 
if (!preg_match("/^[a-zA-Z ]*$/",$name)) 
{ 
$nameErr = "Only letters and white space allowed"; 
} 

我的问题是如何在这里补充点(。)?

回答

2

交易所这一行:

if (!preg_match("/^[a-zA-Z ]*$/",$name)) 

这一行:

if (!preg_match("/^[a-zA-Z\. ]*$/", $name)) 

你必须逃离.角色,因为它在正则表达式的特殊含义。

+0

谢谢,希望这要工作:) – MHH

+0

没有问题,需要注意的是,你还可以缩短这:'的preg_match('/^[AZ \。] * $ /我! ',$ name') - ''i''标志使表达式不区分大小写,你也可能想要知道你当前的正则表达式将匹配一个空字符串 - 末尾的'*'字符表示'零或更多',所以没有匹配是完全有效的。 – jonnu

+0

不幸的是好吃它没有工作...任何想法? – MHH

1
$pattern = "/^[a-zA-Z \.]*$/"; 
1

您可以随时添加一个。在方括号中。例如,表达式[a-zA-Z。]是正确的,并会给你想要的东西,即要检查的字符列表。如果你想检查。外面的[]然后逃脱了。喜欢 。此外,您的代码不会检查是空白的制表符。所以你应该添加\ s而不是''。同样有很多其他的特殊字符,如?这将被视为[]括号中的正常字符。一个例外是 - 必须始终添加,即[A-Z? - ]。然而,仍然有一些特殊字符必须避开,比如“'/。我的建议是在运行表达式之前首先检查它,然后再将它插入到代码中。正则表达式错误非常常见并且很难找到,您的表达式应该是: ! -

$name = test_input($_POST["name"]); 
if (!preg_match("/^[a-zA-Z.\s]+$/",$name)) { 
$nameErr = "Only letters and white space allowed"; 
} 

干杯

相关问题