我正在尝试使用jQuery创建一个名称字段过滤器,我尝试了很多正则表达式,但没有一个完全正常工作。
我只需要将名称字段作为名称字段 - 没有别的,例如例如Adam Jeremy Smith。那么就不可能输入$或/或_或〜或0-9或其他任何东西?怎么做?
我认为应该是:
/[^\\p{L}]+([^0-9])+$/
是的,只有当你输入例如'Adam Je4',但是如果你继续写'Adam Je4remy'它不起作用并且不正确地验证它?
如何实现它?
答案 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] + $ /