姓名和姓氏的正则表达式匹配:如何接受点和连字符?

时间:2013-07-15 14:14:04

标签: regex laravel laravel-4

我正在尝试编写一个简单的正则表达式来验证姓名和姓氏。我在使用特殊字符方面遇到了一些麻烦。

我想要一个名字至少由一个a-zA-Z组成,然后是空格,点和字符'

的任意组合

尝试验证像Penny O'Malley或Rob M. Johnson这样的好名字

到目前为止,我正在运行这个:

/^[A-z][A-z\s.']+$/ 

但它与上面的名字不符;它适用于没有的名字。并且',并且不关心是否有起始空间......

已解决:根据@basher的请求,这是我在laravel验证器中运行的代码。有趣的是,我是积极的,我首先尝试了反斜杠版本(你在下面看到的那个,而不是我在原帖上的那个)并且似乎没有工作......

'name' => 'required|between:3,15|regex:/^[A-z][A-z\s\.\']+$/',
'surname' => 'required|between:3,15|regex:/^[A-z][A-z\s\.\']+$/',
感谢所有贡献的人。我不确定如何将信用归因于你们之间的正确答案.. @ user2141046,是的,\ s似乎有效,至少在laravel框架中。

1 个答案:

答案 0 :(得分:0)

我不确定你是否可以将\ s插入括号中。

尝试[a-zA-Z.' ][a-zA-Z\.\'\ ]作为您的第二个正则表达式(可能会根据语言进行更改)

 echo "Rob M. Mc'Fly" > try
 grep --colour "[a-zA-Z\'\.\ ]" !$
 >> Rob M. Mc'Fly  (colors the entire name).

还在perl正则表达式中使用^[A-z][A-z\'\.\ ]+

进行了确认 顺便说一句,永远不要记住ASCII码所以我更喜欢写A-Za-z;) 另一件事可能是困扰你是隐藏的字符(前导空格)或者回车(如果有操作系统差异),可能是好的摆脱尾随$并再次尝试检查或摆脱领先的^并检查空白问题。

相关问题