所有字母表中包含空格的所有字母的正则表达式除外

时间:2012-07-17 22:20:55

标签: regex spaces letters

我正在尝试使用jQuery创建一个名称字段过滤器,我尝试了很多正则表达式,但没有一个完全正常工作。

我只需要将名称字段作为名称字段 - 没有别的,例如例如Adam Jeremy Smith。那么就不可能输入$或/或_或〜或0-9或其他任何东西?怎么做?

我认为应该是:

/[^\\p{L}]+([^0-9])+$/

是的,只有当你输入例如'Adam Je4',但是如果你继续写'Adam Je4remy'它不起作用并且不正确地验证它?

如何实现它?

3 个答案:

答案 0 :(得分:4)

如果您将名称定义为something that consists of 1 or more words, separated by spaces, where each word consists of one or more letters, and starts with uppercase,则会写出类似......

的内容
/^[A-Z][a-z]+(\s+[A-Z][a-z]+)*$/

但它实际上要复杂得多,请看 - 它不仅仅是关于你的例子中的字母(\p{L};顺便说一句,JS不支持属性unicode类,你必须使用插件(如this one },例如)实现这样的功能)。

例如,你会在你的名字中允许撇号吗?如果是这样,他们怎么可以使用(可能没有名字有两个撇号关闭,像这样 - I''van Ivanov?连字符怎么样?不同的大小写规则怎么样:你会考虑brian d foy一个真正的名字,例如?等等......

重点是你必须平衡你实际期望看到的正则表达式的复杂性。

答案 1 :(得分:2)

严格限制这样的名称格式是不好的做法,因为它没有考虑到各种情况 - 名字中带撇号和破折号的人,使用其他字符的欧洲/亚洲国家的人,等等

有关详细信息,请参阅此文章:http://www.kalzumeus.com/2010/06/17/falsehoods-programmers-believe-about-names/

答案 2 :(得分:0)

答案是:     / ^ [A-Z \ S] + $ /