【问题标题】:Regular expression for name with parentheses带括号的名称的正则表达式
【发布时间】:2013-05-29 21:07:31
【问题描述】:

所以第一次尝试提出正则表达式验证,我有点困惑。用户填写表单的“名称”部分,如下所示:

Lastname, firstname (department). 

但也有可能

 lastname-hyphenedname, firstname (some department). 

或任何类似的东西。我很难找到一个围绕括号和带有连字符的各种名称格式的表达式。有人碰巧知道这个的快速表达吗?

【问题讨论】:

  • 需要特定规则才能构建适当的正则表达式
  • 可以有多个连字符吗?像史密斯-琼斯-布朗一样?
  • Blogs-Smith,Jane-Jen-Joe(他们的部门)怎么样?
  • 别忘了O'Brien、deLacey 和 McDonald 这样的名字

标签: regex string forms validation


【解决方案1】:

^([A-Za-z]+([-']?|\s+))*[A-Za-z]+,\s*([A-Za-z]+([-']?|\s+))*[A-Za-z]+\s*(\([A-Za-z\s]+\))?$

名称可能包含一个或多个连字符部分或由空格或'分隔的部分,然后是逗号,可能是一些空格,然后是名字(可能带有连字符或空格或'),可能是一些空格,然后是(名称括号中有空格)。 PCRE。

【讨论】:

  • 我认为你的意思是 \s 不是 \S
  • 谢谢!做到了。我在正则表达式方面的经验为 0,我们的表单结构有些有趣,在网上找不到我能很好理解的指南。
  • 虽然如果它的“姓氏中间名,名字(部门分支)”如果有 hpyhen 它可以工作,但如果 last 和中间 @gamag 之间有空格则失败......再次感谢!
  • 编辑允许姓氏和中间名之间有任意数量的空格。
【解决方案2】:

使用 pcre 正则表达式,您可以这样做:

^(?i)([a-z]+(?:[ '-][a-z]+)*), (?1) \([^)]+\)\.$

但你可以更严格。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多