2015-01-06 150 views
-2

我想创建一个函数来验证我的应用程序中的名称。有效名称可以包含大小写字母,可以包含-作为好。正则表达式只允许字母,单个空格和“ - ”

<?php 
function ValidateName($input) { 
    if(!preg_match("/[^a-zA-Z- ]/",$input)) { 
     return "The name is invalid"; 
    } else { return $input;} 
} 

$name = "Joe Dow"; 
echo ValidateName($name); 
?> 

它仍然输出名称是invalid.I认为正则表达式肯定是错误的here.Also我向任何多个空格转换成一个空格

+1

你的逻辑倒退了。 “如果字符串不包含('!preg')任何不是('[^ ...]')的字符...则返回无效”。 –

+0

重复http://stackoverflow.com/questions/6925385/how-to-allow-only-spaces-and-alpha-in-name-fields-php-using-regex?rq=1 –

回答

0

你的正则表达式需要有转义连字符无论是在启动或字符类结尾:

/[^a-zA-Z -]/ 

而且你的条件颠倒,你的代码可以是:

if(!preg_match('/^[a-zA-Z -]+$/', $input)) { 
    return "The name is invalid"; 
} else { 
    return $input; 
} 
2
preg_match("/^[a-zA-Z -]+$/",$input) 

猜你需要this.Try这个验证,而不是拒绝match.If它匹配这是有效的。

1

更改为:/[^a-zA-Z- ]/为此:/[^a-zA-Z -]+/

问题很可能是-不在最后。

+0

@ h2ooooooo:对不起我的错。 – npinti

相关问题