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

如何基于正则表达式验证CPR有效性?现有正则匹配全部失败求助

CPR正则验证修复方案

你的正则表达式核心问题是长度匹配错误,导致所有9位CPR都无法通过验证:

原正则里的前半段(([8-9][0-9]|[0-1][0-9]|2[0-3]){2})多了一个{2}量词,这会强制匹配4位数字作为年份部分,加上月份2位和最后5位,总长度变成11位,完全不符合CPR的9位要求。

修正后的正则表达式

^([8-9]\d|0\d|1\d|2[0-3])(0[1-9]|1[0-2])\d{5}$

各部分说明

  • ^ 与 $:严格限定字符串首尾,避免匹配包含9位CPR的更长文本
  • ([8-9]\d|0\d|1\d|2[0-3]):精准匹配1980-2023年对应的年份后两位:
    • [8-9]\d:覆盖80-99(对应1980-1999)
    • 0\d|1\d:覆盖00-19(对应2000-2019)
    • 2[0-3]:覆盖20-23(对应2020-2023)
  • (0[1-9]|1[0-2]):匹配合法月份01-12
  • \d{5}:匹配任意5位数字作为最后一段

测试示例

  • 有效CPR:800412233(匹配1980年4月)、231299999(匹配2023年12月)
  • 无效CPR:240112345(年份24超出范围)、801312345(月份13不合法)、80041234(长度不足9位)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 02:57:08