我想要一个带有称呼的全名正则表达式。任何人都可以帮助我。
^[A-Za-z] ([A-Za-z] (\\s|\\.|_)?)+[a-zA-Z]*$
这是我的正则表达式,我用它来作为全名,但它并没有表示敬意。
答案 0 :(得分:6)
规则一:永远不要试图强制执行有关人名的规则。 总是是您排除的人,纯粹是因为他们的名字与您的期望不符。
那些没有(或想要)致敬的人呢?或者那些有多个人? “Sir Sir教授”在英国是一个非常有效的组合,而在德国,拥有多个学位的人通常称自己为“医生博士”或类似的东西。
然后就是实际的名字。即使对于像Mary-Jane O'Brien或“Andrévanden Berg”这样的相对普通的西方名字,你的正则表达也会失败,更不用说更多不寻常的案例了。
简而言之,准确验证名称字段几乎是不可能的。
这是一个指向页面的链接,该页面描述了人们试图对名称进行验证的一些显而易见的(并不是那么明显)的事情,这可能会让你失望:
http://www.kalzumeus.com/2010/06/17/falsehoods-programmers-believe-about-names/
(我在此之前发布了类似的评论:How to "Validate" Human Names in CakePHP?)
答案 1 :(得分:3)
如果坚持通过正则表达式执行此操作,请将(Dr|Mrs?|Ms)\.
添加到模式中。将匹配:
Dr.
Mr.
Mrs.
Ms.
即,(假设您对正则表达式的其余部分感到满意 - 直接从问题中获取。)
^(Dr|Mrs?|Ms)\. [A-Za-z] ([A-Za-z] (\s|\.|_)?)+[a-zA-Z]*$
然而,
修改强>
(Dr|Mr?s?)\.
错了,抱歉。它也匹配M.
。谢谢,@ tchrist。
答案 2 :(得分:2)