电话号码正则表达式测试器
经过测试的电话号码正则:美国/加拿大、E.164、英国和印度手机号及国际号码。可逐行检查号码列表并复制代码。
匹配只检查格式,并不能证明该号码已被分配或可以拨通。
测试使用 JavaScript 正则表达式运行;代码片段已把该模式转换为 JavaScript 的写法。
| 行 | 输入 | 结果 | 未通过的原因 |
|---|---|---|---|
| 1 | (415) 555-2671 | 有效 | |
| 2 | +1 415 555 2671 | 有效 | |
| 3 | 415.555.2671 | 有效 | |
| 4 | 123-456-7890 | 无效 | 区号不能以 0 或 1 开头 |
| 5 | 555-2671 | 无效 | 需要 10 位数字(带前导 1 时为 11 位),当前为 7 位 |
| 6 | +44 7700 900123 | 无效 | 需要 10 位数字(带前导 1 时为 11 位),当前为 12 位 |
| 7 | +91 98765 43210 | 无效 | 需要 10 位数字(带前导 1 时为 11 位),当前为 12 位 |
各国电话号码格式不同,因此不存在既严格又通用的电话号码正则。这个工具为最常被问到的格式提供经过测试的模式:美国和加拿大(NANP)、严格的 E.164、英国手机、印度手机,以及宽松的国际号码检查。它会用您选择的模式逐行测试,说明号码未通过的原因,并生成 JavaScript、Python、PHP 或 Java 代码。
使用方法
- 选择与您接受的号码相符的模式。
- 每行粘贴一个号码,或选择提取模式,在文本中查找美国和加拿大号码。
- 查看有效和无效的数量,以及每个未通过行的原因。
- 复制适用于您所用语言的代码片段。
计算公式
E.164: ^\+[1-9]\d{1,14}$ · NANP: ^(?:\+?1[-. ]?)?(?:\([2-9]\d{2}\)|[2-9]\d{2})[-. ]?[2-9]\d{2}[-. ]?\d{4}$
E.164 号码是 + 后跟最多 15 位数字,国家代码不会以 0 开头。在北美编号计划中,3 位区号和 3 位交换局代码都以 2–9 开头。英国模式涵盖 071–075 和 077–079,再加上马恩岛的特例 07624;070 个人号码和其他 076 寻呼号码被排除。印度手机号为 6–9 开头的 10 位数字,前面可带 +91、91 或 0。宽松模式只要求 7–15 位数字,可含 +、空格、点、连字符和括号。这些只是格式检查,并非完整的号码分配规则。不同语言的空白字符类可能存在差异,非 ASCII 输入请在目标运行环境中测试。表格最多显示 400 行。
示例
使用默认列表和美国/加拿大模式,7 行中有 3 行通过:(415) 555-2671、+1 415 555 2671 和 415.555.2671。123-456-7890 未通过,因为没有以 1 开头的区号;555-2671 只有 7 位;英国和印度的号码是 12 位。宽松的国际格式接受全部 7 行,而英国手机和印度手机各接受一行。
常见问题
应该用 E.164 存储号码吗?
用“+国家代码”开头的国际格式存储很方便。要正确解读本地号码并去掉国内长途前缀,请使用号码计划库。这里显示的 E.164 风格正则只检查整体形状,不验证国家代码或各国的编号计划。
匹配就代表这个号码存在吗?
不是。正则只检查形状。号码是否已分配、是否为手机、能否拨通,需要通过运营商查询或发送短信验证码来确认。
为什么不直接数位数?
数位数能发现大多数输入错误,宽松模式就是这样做的。各国模式则增加了结构检查,例如拒绝以 0 或 1 开头的美国区号,因为编号计划从不分配这样的区号。
555 号码是真实号码吗?
555-0100 至 555-0199 在北美保留给虚构用途。这类号码格式有效,所以模式会接受它们,但实际上拨不通。
资料来源
最后更新:
包含这些输入的页面地址: https://kakao.mobile/zh/tools/phone-regex-tool/
引用此工具
kakaoCalc. (2026, November 8). 电话号码正则表达式测试器. https://kakao.mobile/zh/tools/phone-regex-tool/
“电话号码正则表达式测试器.” kakaoCalc, 8 Nov. 2026, kakao.mobile/zh/tools/phone-regex-tool/.