2013-05-06 47 views
1

我一直在尝试验证输入是使用正则表达式在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变量包含名和姓。我一直在努力使这项工作,我一直无法得到输入匹配的正则表达式。我是否正确使用了这些内容,或者是否需要以其他方式输入。感谢您的帮助

+0

如果那是你的名字,那么这段代码会确保你没有输入任何数字。 – BobMan 2013-05-07 01:35:54

+0

我只需要检查以确保名称中没有添加数字,这是为了一个类分配。 – BobMan 2013-05-07 01:36:49

回答

1

如果名称是surename,你应该根据国家,例如波兰使用条件名字这将是

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

这意味着所有包含两个部分的名称是字母与空间分开他们是好的。如果你想名字的第一个字母是上你应该将其更改为

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

如果$名称由你在第一个参数提供的正则表达式验证的preg_match返回true。

因此,您对此功能的使用没问题,您应该检查您的表情。

http://pl1.php.net/preg_match

的preg_match()如果图案给定主题匹配,0,如果没有,或FALSE如果发生错误返回1。

您可以随时检查您的正则表达式在线检查例如

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

+0

为什么“取决于国家”?你认为波兰的所有人都有小写字母吗? – Bergi 2013-05-06 11:00:53

+0

为什么?因为在不同的国家,名称条件可能会不同,例如在荷兰,您有名称“Rafael Ferdinand van der Vaart”,或者在某些北美洲国家/地区名称中,例如波兰的“jose francisco cevallos enriquez”不正确。 – Robert 2013-05-06 11:07:09

+0

何塞不被允许住在波兰?范德法特不住在德国吗? – Bergi 2013-05-06 12:17:20

0

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

0

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

相关问题