【问题标题】:What is the regex pattern for Name? [closed]Name 的正则表达式模式是什么? [关闭]
【发布时间】:2013-09-25 12:51:25
【问题描述】:

这些规则的正则表达式模式是什么:

  • 名称的第一位数字大写

有效:约翰 无效:约翰

  • 名称中间允许大写,但只能使用一次。

有效:麦克阿瑟 无效:McArThuR

  • 撇号 (') 仅使用一次,并且必须在名称中间

有效:Mac O'Brian 无效:Mac' O''Brian

【问题讨论】:

  • 祝你好运……
  • 你试过什么?根据标记菜单:“要求代码的问题*必须证明对正在解决的问题有最低限度的了解*。包括尝试的解决方案、它们为什么不起作用以及预期的结果。请参阅还有:Stack Overflow question checklist。”
  • “Jan de Wit”、“Paul-Henri Carle de Limoges”等名称怎么样?多少个空格都可以。在你的世界里,所有的“词”都需要以大写字母开头吗?多个单词可以有撇号吗?连字符怎么样?
  • Falshoods programmers believe about names 是一本有趣的读物,即使您决定它不适用于您的情况。
  • 告诉某人他们的名字无效通常是一种糟糕的用户体验。

标签: regex validation


【解决方案1】:

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

^.+$

不客气。

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

【讨论】:

  • 确实排除了无名... :)
  • 我想你的意思是given name,因为在世界的大部分地区(大多数?),姓是名字。
  • @larsmans 同意了。我在输入时意识到了问题,但想不出正确的单词。
  • @deceze 如果我应该使用 * 或 + :D
【解决方案2】:

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

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

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

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

【讨论】:

  • 这假定中间撇号紧挨着中间大写字母。最初的问题没有这个假设。
  • 真;我认为是暗示的(撇号分隔爱尔兰/苏格兰风格名称中的名称部分)。但最好不要在规范方面做出假设。
【解决方案3】:
[A-Z][a-z ]*   (?:   [A-Z]?[a-z ]*\'?   |   \'?[a-z ]*[A-Z]?   )   [a-z ]+

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-06-29
    • 2023-03-19
    • 2016-09-28
    • 1970-01-01
    • 1970-01-01
    • 2015-07-21
    • 1970-01-01
    • 2013-08-21
    相关资源
    最近更新 更多