正则表达式,以避免非人名

时间:2010-10-19 20:49:47

标签: php

实际上我为此做了一个正则表达式,以避免假名(至少没有一些奇怪的符号)。我在PHP中这样做。正则表达式是:

/ [ \ ^ < , \ " @ \ / \ { \ } \ ( \ ) \ * \ $ % \ ? = > : \ | ; # ] + /

但它失败了,我不知道为什么(只是不检测符号)。我想要的是,如果其中一些符号(例如,@#* / \),则返回false(与所有其他正则表达式一样)。

非常感谢你!

PS:对不起,我完全忘记了。我想要所有类型的名字:带有',¨,ñ,包括但不包括日本独有的名字。名称或姓氏也可以包括空格!

3 个答案:

答案 0 :(得分:2)

我没有看过你的正则表达式(你搞砸了格式化,这没有帮助),但我愿意打赌这是错的。 (实际上,我认为你有逗号作为禁止的角色。在那里,我赢了我的赌注。逗号是罕见的,但常规,以美国名字。)

阅读Patrick McKenzie's article “Falsehoods Programmers Believe About Names”。如果您在此之后仍想使用正则表达式,那么显然您还没有阅读过该文章,请继续阅读。

请记住,每当你拒绝一个名字无效时,就会有人誓言杀死你的孩子,并将他们的孙子孙女杀死到第七代。This has been said so well before that I can but cite the Truth (just read “names” where is says “HTML”)。您无法使用regexp验证名称。即使是Perl增强的不规则表达式也无法验证名称。甚至John T也无法使用正则表达式验证名称。中心无法忍受为时已晚。名称无效なसर्वरदोषהצפתמחסנית

不要使用regexps来验证名称!想想孩子们!

- Gilles“Bobby”O'Malley-McDonald - U,Jr。

答案 1 :(得分:1)

  

^ [A-Za-z,。] + $

仅允许A到Z,空格,句点和逗号。 A到Z很明显。标题需要句号和逗号(即:Dougie Howser,M.D。)。

答案 2 :(得分:0)

你可以用另一种方式做,如果它只包含字母,没有数字或特殊字符,则返回true。

就像这样我相信(对不起,自从我完成正则表达式以来已经很长时间了): m/^[a-zA-Z]+$/