使用RegEx的if条件的正确方法是什么

时间:2013-05-06 10:48:28

标签: php regex

我一直在尝试验证一个表单,其中输入是使用PHP中的regex的名字和姓氏。我需要正则表达式做的就是检查以确保没有数字。这就是我现在所拥有的:

if (preg_match('/\A\b[^0-9]*\W[^0-9]*\b\Z/sm', $name)) {
# Successful match
$nameError = "";
echo $name;
} else {
# Match attempt failed\
$nameError = "No Numbers";
}

$ name变量包含名字和姓氏。我一直在尝试使这项工作,我无法得到输入以匹配正则表达式。我是正确使用它还是我需要以其他方式输入它。谢谢你的帮助

3 个答案:

答案 0 :(得分:1)

如果name是surename和first name,你应该根据国家/地区使用条件,例如在波兰,它将是

preg_match('/[a-z]+ [a-z]+/i',$name); 

这意味着所有包含两个部分的名称都是字母的,空格分隔它们是好的。如果您希望名字的第一个字母为高位,则应将其更改为

preg_match('/[A-Z][a-z]+ [A-Z][a-z]+/',$name); 

如果$ name由您在第一个参数中提供的正则表达式验证,则Preg_match返回true。

所以你对这个函数的使用是可以的,你应该检查一下你的表达。

http://pl1.php.net/preg_match

  

如果模式与给定主题匹配,则preg_match()返回1,否则返回0;如果发生错误,则返回FALSE。

您可以随时在在线检查器上查看正则表达式,例如

http://www.solmetra.com/scripts/regex/

答案 1 :(得分:0)

如果你只想要用一个空格分隔两个单词,这可以做你想做的事:if (preg_match('/^[A-Za-z]+ [A-Za-z]+$/', $name))

答案 2 :(得分:0)

谢谢大家的回复,我在最明显的地方找到了答案,但它与正则表达式没有任何关系。我忘了正确设置变量,以便在与表单相同的页面上使用它们。愚蠢的错误。无论如何,再次感谢你。