-4

What is the regex pattern for these rules:

  • Uppercase in the first digit of the name

Valid: John Invalid: JohN

  • Uppercase in the middle of the name is allowed but only once.

Valid: McArthur Invalid: McArThuR

  • Using apostrophe (') once only and must in the middle of the name

Valid: Mac O'Brian Invalid: Mac' O''Brian

4

3 回答 3

8

这是一个全球正则表达式,适用于世界各地任何文化的所有名称。

^.+$

不客气。

您正在尝试做的是对一个非常开放的字段进行复杂的验证。考虑改为提供given namefamily name输入字段。

于 2013-09-25T12:58:23.707 回答
1

如果您真的打算将此用于验证(例如在网络表单或帐户注册中),我会注意 Damien_The_Unbeliever 的评论。让人们随心所欲地拼写他们的名字可能会更好;事后有更好的方法来识别巨魔。

但是,作为一项智力练习,这里有一个正则表达式,可以根据您提供的示例进行验证。这是 PCRE 语法;您可能需要针对您的特定正则表达式语法或风格调整或修改它:

[A-Z][a-z]+(?:[A-Z]?'?|'?[A-Z])[a-z]+

请注意,您必须将其单独应用于每个名称或名称部分,但由于您的验证模式主要由西欧姓氏约定驱动,因此仅应用于姓氏可能是有意义的。

于 2013-09-25T13:02:41.343 回答
1
[A-Z][a-z ]*   (?:   [A-Z]?[a-z ]*\'?   |   \'?[a-z ]*[A-Z]?   )   [a-z ]+

丢弃方括号外的空格,我放它们只是为了让不同的部分清楚。

于 2013-09-25T13:02:52.373 回答