我正在尝试创建一个函数来验证我的应用程序中的名称。有效名称可以包含大写和小写的字母,也可以包含-
。
<?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);
?>
它仍然输出名称无效。我认为这里的正则表达式必定是错误的。我还要将任意多个空格转换为单个空格
答案 0 :(得分:2)
preg_match("/^[a-zA-Z -]+$/",$input)
猜猜你需要这个。试试这个验证而不是拒绝匹配。如果匹配则这是有效的。
答案 1 :(得分:1)
将此更改为/[^a-zA-Z- ]/
:/[^a-zA-Z -]+/
。
问题很可能是-
没有结束。
答案 2 :(得分:0)
你的正则表达式需要在字符类的开头或结尾都有未转义的连字符:
/[^a-zA-Z -]/
你也有条件逆转,你的代码可以是:
if(!preg_match('/^[a-zA-Z -]+$/', $input)) {
return "The name is invalid";
} else {
return $input;
}