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

如何编写符合指定规则的含横杠13位电话号码校验正则表达式

符合要求的电话号码校验正则实现

你当前编写的/^(?:[0-9]-*){13}$/存在逻辑错误:该正则要求匹配13组「数字+任意数量横杠」的组合,会强制至少出现13个数字,既无法满足总长度为13的要求,也不能限制横杠的数量范围。

正确正则表达式

/^(?=^.{13}$)(?=[0-9])(?=(?:[^-]*-){1,3}[^-]*$)[0-9-]+$/

规则匹配逻辑拆解

  • (?=^.{13}$):正向先行断言,限制整个字符串总长度恰好为13个字符,匹配总长度规则
  • (?=[0-9]):正向先行断言,限制首字符必须为数字,匹配首字符规则
  • (?=(?:[^-]*-){1,3}[^-]*$):正向先行断言,统计横杠出现次数为1~3次,匹配横杠数量规则
  • [0-9-]+$:限制整个字符串仅能由数字和横杠两种字符组成

测试验证样例

  • 合法样例:189-1234-5678(总长度13、2个横杠、首字符为数字)
  • 非法样例:
    • -189123456789:首字符为横杠,违反首字符规则
    • 1891234567890:无横杠,违反横杠数量下限规则
    • 1-8-9-1-2345678:共4个横杠,违反横杠数量上限规则
    • 189-1234-567:总长度仅12,违反总长度规则

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 23:06:06