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

如何编写满足开头2字母、10数字及最多4个连字符的正则表达式

正则表达式修改方案

原正则的问题

你的原正则/^([A-Z]{2})?[0-9]{10}$/存在两个不符合需求的问题:

  • ([A-Z]{2})?中的问号让开头的字母变成可选,违反了“必须恰好2个字母”的规则;
  • 完全没处理数字间的-分隔符,也没限制分隔符最多4个的要求。

修改后的正则表达式

/^[A-Z]{2}(?=(?:-?\d){10}$)(?=(?:\d-){0,4}\d$)[\d-]+$/

规则拆解

  1. 开头强制2个字母:^[A-Z]{2} 确保字符串以恰好2个大写字母开头(如果需要支持小写,可改为[A-Za-z]);
  2. 确保恰好10个数字:(?=(?:-?\d){10}$) 是正向预查,匹配“可选的- + 数字”的组合重复10次,保证不管有没有分隔符,数字总数刚好是10;
  3. 限制最多4个分隔符:(?=(?:\d-){0,4}\d$) 也是正向预查,匹配“数字 + -”的组合最多4次,最后以数字结尾,确保-只能在数字之间,且数量不超过4个;
  4. 匹配数字和分隔符组合:[\d-]+ 实际匹配数字和-的组合,前面的预查已经过滤掉不符合规则的情况。

验证示例

  • 有效匹配:GB123-55-22-22-6(4个分隔符,10个数字)、GB1235522226(无分隔符,10个数字)、GB1-234567890(1个分隔符,10个数字);
  • 无效匹配:G1235522226(仅1个开头字母)、GB12-34-56-78-90-1(5个分隔符)、GB123456789(仅9个数字)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 15:40:37