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

正则编写:拦截前三位重复(除888外)的10-25位电话号码

电话号码校验正则实现方案

直接使用以下正则即可满足全部校验规则:

^(?!([0-79])\1{2})\d{10,25}$

原有正则的问题

你之前使用的\b(\d)\3+\b存在3个核心问题,导致匹配不符合预期:

  • 反向引用序号错误:正则中仅定义了1个捕获组,反向引用需要用\1,\3指向不存在的捕获组,匹配逻辑完全失效
  • 校验范围错误:该写法会匹配字符串任意位置的连续重复数字,不符合仅校验号码前三位的要求
  • 缺失核心规则:没有做10-25位的长度限制,也没有对888开头的合法场景做白名单放行

正则逻辑拆解

  • ^:锚定字符串起始位置,确保从号码首位开始校验
  • (?!([0-79])\1{2}):负向先行断言做非法开头拦截:如果号码前三位是除888外的三位重复数字(000/111/.../777/999),直接判定匹配失败
  • \d{10,25}:匹配10-25位纯数字,满足长度校验要求
  • $:锚定字符串结束位置,避免号码前后混入非数字字符

匹配效果验证

  • 合法样例放行:
    • 88876565451:888开头,长度11位,匹配通过
    • 7687987555:非三位重复数字开头,长度10位,末尾连续重复的5不触发前三位校验规则,匹配通过
  • 非法样例拦截:
    • 666879876577:666开头,属于非888的三位重复开头,拦截
    • 4448765654567:444开头,属于非888的三位重复开头,拦截
    • 长度不足10位、超过25位、包含非数字字符的输入,均会被拦截

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 09:57:19