You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Perl正则表达式验证格式规范的含Sr./Jr.的人名

Perl正则匹配规范人名的解决方案

匹配规则明确

需要匹配的人名需满足以下要求:

  • 普通全名(如John Smith):不能以标点符号结尾
  • 带后缀的全名:必须是, Sr.或, Jr.格式,即逗号加空格开头、句点结尾,且Sr/Jr首字母大写,其余小写(禁止sr、SR等其他大小写组合)

正确的正则表达式

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

正则各部分解析

  • ^:锚定字符串开头
  • [A-Za-z]+(?:['-][A-Za-z]+)*:匹配名字部分,允许包含单引号或连字符(如O'Connor、Mary-Ann),确保标点前后都有字母,避免人名以标点结尾
  • \s:匹配名字与姓氏之间的空格
  • [A-Za-z]+(?:['-][A-Za-z]+)*:匹配姓氏部分,规则与名字一致
  • (?:,\s(Jr|Sr)\.)?:可选的后缀非捕获组,严格限定后缀格式为, Sr.或, Jr.,?表示这部分可省略
  • $:锚定字符串结尾

示例验证

匹配成功的案例

  • John Smith
  • John Smith, Sr.
  • John Smith, Jr.

匹配失败的案例

  • John Smith Sr:缺少逗号空格与句点,不符合后缀格式
  • John Smith, Sr:缺少句点,不符合后缀格式
  • John Smith, SR.:SR大小写不符合要求
  • John Smith Sr.:缺少逗号空格,不符合后缀格式
  • John Smith, John Smith Sr.:包含多余的人名片段
  • John Smith-:姓氏以连字符结尾,违反规则

之前尝试的正则问题分析

  1. 第一个正则^(?!.(Jr|Sr)(?<!,\sJr.)(?<!,\sSr.)$).$:逻辑模糊,既没有正确定义人名的结构,也没有严格限制后缀格式,导致错误匹配John Smith,、John Smith Sr.这类不符合要求的内容。
  2. 第二个正则^([A-Za-z]+['-]?[A-Za-z]\s)([A-Za-z]+['-]?[A-Za-z]*)(,\s(Jr|Sr).)?$:姓氏部分的['-]?[A-Za-z]*允许标点后无字母,因此会匹配John Smith-这种以连字符结尾的无效人名。

内容的提问来源于stack exchange,提问作者Truper63

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 13:25:03