电话号码格式化
解析、验证和格式化国际电话号码
使用+前缀输入国际格式(例如 +86 138 0013 8000)
格式化输出
国内格式
-
E.164 格式
-
国际格式
-
国家
-
国家代码
-
国内号码
-
位数
-
发现的问题
格式化器输出什么
本工具接受几乎任意写法的电话号码,返回三种形态,外加一个有效性判断和一份问题清单:
- 国内格式 —— 按该国人们习惯的分组方式书写。
- E.164 —— 机器可读形式,例如
+14155552671。 - 国际显示格式 —— 拨号代码后接分组后的国内号码,例如
+1 (415) 555-2671。
它还会报告识别出的国家、拨号代码、去掉拨号代码后的国内号码,以及数字位数。
一个电话号码不是一整条字符串,而是一组部件,而不同读者需要不同的排列。本地读者期待国内分组,可能带有长途冠码;国际来电者期待国家代码且不带冠码;机器期待只有加号、拨号代码和数字的 E.164。底层号码从未改变,但去掉一个分隔符或保留一个前导零,就可能让原本可用的字符串被短信网关拒绝。手工在三种视图之间转换,正是大多数错误滋生之处,也是本页面要解决的问题。
自动识别与手动选择国家
行为完全取决于输入是否以加号开头。
如果你输入前导 +,工具会剥离分隔符,把数字与每一个拨号代码比较,并采用最长匹配。这就是为什么 +44... 会被读成英国,尽管 +4 本身并不是一个国家代码。
如果没有 +,则不做任何猜测。你必须从下拉菜单中选择国家,否则工具会报告无法确定。这一点很重要,因为同一串数字在多个国家都有效——612345678 是正常的法国手机号,放到别处看起来也可能合理——所以本页面刻意拒绝从裸国内号码推断国家。
各国规则一览
分组模板和可接受长度按国家固定:
| 国家 | 代码 | 国内格式模板 | 可接受长度 |
|---|---|---|---|
| 美国 | +1 | (XXX) XXX-XXXX | 10 |
| 加拿大 | +1 | (XXX) XXX-XXXX | 10 |
| 中国 | +86 | XXX XXXX XXXX | 11 |
| 英国 | +44 | XXXX XXX XXX | 10 |
| 日本 | +81 | XX XXXX XXXX | 10 |
| 韩国 | +82 | XX XXXX XXXX | 9–10 |
| 印度 | +91 | XXXXX XXXXX | 10 |
| 德国 | +49 | XXX XXXXXXX | 10–11 |
| 法国 | +33 | X XX XX XX XX | 9 |
| 澳大利亚 | +61 | XX XXXX XXXX | 9 |
| 巴西 | +55 | XX XXXXX XXXX | 10–11 |
| 意大利 | +39 | XXX XXX XXXX | 9–10 |
| 西班牙 | +34 | XXX XXX XXX | 9 |
| 墨西哥 | +52 | XX XXXX XXXX | 10 |
| 俄罗斯 | +7 | XXX XXX XX XX | 10 |
当可接受长度范围比模板更宽时,较长的号码能通过校验,但返回时不带分组。
实操示例
美国本地号码。 输入 (415) 555-2671 并选择美国。结果是国内格式 (415) 555-2671、E.164 +14155552671、国际格式 +1 (415) 555-2671。
英国国际号码。 输入 +442079460958。加号触发对 +44 的识别,剩下 10 位国内号码 2079460958,分组为 2079 460 958,E.164 为 +442079460958,国际显示为 +44 2079 460 958。
法国手机号。 输入 612345678 并选择法国。它是 9 位,符合法国模板,因此变成 6 12 34 56 78,E.164 为 +33612345678。
局限与误判
这里的校验是形态检查,不是查询。它确认数字位数并标记字母或多余符号,但无法知道号码是否已分配、已携号转网或仍在服务中。一个通过校验的号码仍可能已停机,而一个真实号码如果采用了不常见但有效的写法,也可能不通过。
还有两点局限值得记住。长途冠码问题影响那些在国内书写时带前导零的国家,例如英国、法国、德国和意大利;在长度检查和 E.164 转换之前,你必须去掉这个零。另外,共享国家代码会冲突:由于识别器对同一长度返回第一个匹配项,+1 永远解析为美国,永远不会是加拿大。当你需要正确标签时,请手动选择国家。
实战:清洗电话号码列表
当你从电子表格粘贴一列号码时,最常见的修正都是机械性的。剥离所有非数字字符和一个前导加号,去掉国内长途零,然后按上面的国家规则检查长度。失败的号码通常差一位、带有意外的分机号,或者在区号前写着 1- 这样的国内前缀。先决定每个国家用什么统一表示法,把整列按该格式转换,再抽查首尾两行。在存储中只保留一种规范的 E.164 形式、仅在展示时格式化,能避免同一个号码在客户记录里出现两次。
相关工具
常见问题
为什么我的加拿大号码被识别成美国?
加拿大和美国共用国家代码 +1,而识别器按最长拨号代码优先匹配。当代码长度相同时,它会取列表中的第一项,也就是美国,所以所有 +1 号码都被标成美国。当你需要区分时,请从下拉菜单中手动选择加拿大。
我按日常写法输入的英国号码为什么提示「过长」?
多半是你带上了长途冠码零。按国内写法,英国号码 020 7946 0958 共有 11 位,但这里的英国规则期待的是 10 位用户号码 2079460958。在进行 E.164 转换前,请先去掉这个前导零。
校验通过是否代表号码真实且在使用中?
不是。校验只检查字符是否为数字和常见分隔符,以及长度是否落在该国范围内。它不检查区号、号段、分配情况,也不检查是否有人接听,所以一个格式正确但未分配的号码同样能通过。
为什么我 11 位的德国号码没有被格式化?
德国显示规则只对恰好 10 位的号码分组。该国的有效长度范围允许 10 位或 11 位,因此 11 位号码能通过校验,却不匹配分组模板,工具会原样返回数字而不擅自猜测分隔方式。
格式化器覆盖哪些国家?
15 个国家:美国、加拿大、中国、英国、日本、韩国、印度、德国、法国、澳大利亚、巴西、意大利、西班牙、墨西哥和俄罗斯。每个国家都有自己的国内分组模板和数字长度范围。
什么是 E.164,为什么短信和网络电话服务坚持用它?
E.164 是国际电信联盟制定的电话号码国际标准:一个加号、1 到 3 位的国家代码,再接国内号码,总长最多 15 位,中间不含空格和括号。网关和 API 只解析这种确切形态,所以一个方便人类阅读的本地格式可能被拒绝,或被路由到错误的目的地。
由 HandyTools Hub 团队审校 · 最后更新