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

求匹配特定规则的正则表达式:9位数字、两位后加横杠等约束

满足要求的正则表达式

这里是符合你需求的正则表达式:

^[1-9]\d-\d{7}$

规则拆解与解释

我来逐个部分拆解这个正则的作用:

  • ^:锚定字符串的开头,确保我们匹配的是整个内容的起始位置,避免匹配到字符串中间的片段。
  • [1-9]:匹配第一个数字,范围限定在1到9,直接满足不能以零开头的核心要求。
  • \d:匹配第二个数字,可以是0-9中的任意一个,给前两位数字保留了合理的灵活性。
  • -:匹配字面意义的横杠,严格对应“前两位数字后添加一个横杠”的格式要求。
  • \d{7}:匹配连续的7个数字,加上前两位正好凑够总计9位数字。
  • $:锚定字符串的结尾,确保整个字符串完全符合规则,没有多余的前缀或后缀字符。

为什么这个正则能覆盖所有条件?

  1. 总计9位数字:前两位([1-9]\d)加上后七位(\d{7}),刚好是9个数字,中间用横杠分隔,完全符合格式要求。
  2. 不能以零开头:第一个字符被限制为1-9,直接排除了所有以0开头的情况(比如01-2323232会被直接拒绝)。
  3. 不允许全部为零:因为第一个数字是1-9,整个9位数字不可能全是0(比如00-0000000本身就以0开头,已经被规则排除)。

测试示例验证

  • 有效案例:12-2322232 → 完全匹配正则,符合所有要求。
  • 无效案例:01-2323232 → 第一个字符是0,不匹配[1-9],被拒绝。
  • 无效案例:00-0000000 → 第一个字符是0,不匹配[1-9],被拒绝。

如果需要极端严谨地排除“全零”场景(虽然在当前规则下已经不可能出现),也可以用带负向前瞻的版本,确保至少有一个非零数字:

^(?=.*[1-9])[1-9]\d-\d{7}$

不过这个属于冗余写法,因为前面的[1-9]已经保证了至少有一个非零数字,第一个正则完全足够满足需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 08:44:19