HandyTools Hub

电话号码格式化

解析、验证和格式化国际电话号码

使用+前缀输入国际格式(例如 +86 138 0013 8000)

格式化器输出什么

本工具接受几乎任意写法的电话号码,返回三种形态,外加一个有效性判断和一份问题清单:

  • 国内格式 —— 按该国人们习惯的分组方式书写。
  • E.164 —— 机器可读形式,例如 +14155552671。
  • 国际显示格式 —— 拨号代码后接分组后的国内号码,例如 +1 (415) 555-2671。

它还会报告识别出的国家、拨号代码、去掉拨号代码后的国内号码,以及数字位数。

一个电话号码不是一整条字符串,而是一组部件,而不同读者需要不同的排列。本地读者期待国内分组,可能带有长途冠码;国际来电者期待国家代码且不带冠码;机器期待只有加号、拨号代码和数字的 E.164。底层号码从未改变,但去掉一个分隔符或保留一个前导零,就可能让原本可用的字符串被短信网关拒绝。手工在三种视图之间转换,正是大多数错误滋生之处,也是本页面要解决的问题。

自动识别与手动选择国家

行为完全取决于输入是否以加号开头。

如果你输入前导 +,工具会剥离分隔符,把数字与每一个拨号代码比较,并采用最长匹配。这就是为什么 +44... 会被读成英国,尽管 +4 本身并不是一个国家代码。

如果没有 +,则不做任何猜测。你必须从下拉菜单中选择国家,否则工具会报告无法确定。这一点很重要,因为同一串数字在多个国家都有效——612345678 是正常的法国手机号,放到别处看起来也可能合理——所以本页面刻意拒绝从裸国内号码推断国家。

各国规则一览

分组模板和可接受长度按国家固定:

国家代码国内格式模板可接受长度
美国+1(XXX) XXX-XXXX10
加拿大+1(XXX) XXX-XXXX10
中国+86XXX XXXX XXXX11
英国+44XXXX XXX XXX10
日本+81XX XXXX XXXX10
韩国+82XX XXXX XXXX9–10
印度+91XXXXX XXXXX10
德国+49XXX XXXXXXX10–11
法国+33X XX XX XX XX9
澳大利亚+61XX XXXX XXXX9
巴西+55XX XXXXX XXXX10–11
意大利+39XXX XXX XXXX9–10
西班牙+34XXX XXX XXX9
墨西哥+52XX XXXX XXXX10
俄罗斯+7XXX XXX XX XX10

当可接受长度范围比模板更宽时,较长的号码能通过校验,但返回时不带分组。

实操示例

美国本地号码。 输入 (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 团队审校 · 最后更新