一句话回答: 国际通用写法是 E.164:
++ 国家码 + 国内号码,去掉国内拨号用的前缀 0,总长度不超过 15 位数字。绝大多数「号码格式无效」的报错,都是多了一个 0 或者国家码填了两遍。

各国号码长度、分段方式都不一样,唯一跨国通用的只有 E.164 这一套。把它记牢,填任何表单都不会错。
E.164 三条规则
- 以
+开头,代表「后面是国家码」。表单里如果只允许数字,用00代替+通常也认。 - 紧跟国家码,1 到 3 位,比如 +1、+44、+86、+852。
- 再接国内号码,去掉 trunk 前缀 0。总数字位数最多 15。
不要写空格、括号、横杠。虽然多数表单会自动清洗,但少数会原样提交然后判为无效。
各国示例(去 0 与否)
| 国家 | 国内写法 | 国际写法(E.164) |
|---|---|---|
| 美国 / 加拿大 | (415) 555-0123 | +14155550123 |
| 英国 | 07700 900123 | +447700900123 |
| 德国 | 0151 23456789 | +4915123456789 |
| 法国 | 06 12 34 56 78 | +33612345678 |
| 日本 | 090-1234-5678 | +819012345678 |
| 中国大陆 | 138 0000 0000 | +8613800000000 |
| 意大利 | 06 1234 5678 | +390612345678 |
英国、德国、法国、日本都要去掉开头的 0;美国和中国大陆手机号本身没有 0;意大利是著名例外,固话前导 0 要保留。中国大陆的完整规则见 中国手机号是 +多少,+1 覆盖哪些国家见 手机号 +1 是哪个国家。
6 个常见填错
- 国家码重复。 下拉框选了国家,输入框又打一遍
+44。 - 该去的 0 没去。
+44 07700 900123是错的。 - 不该去的 0 去了。 意大利固话去掉 0 反而打不通。
- 用了本地拨号习惯。 比如国内习惯的
01x长途前缀,出了国境没有意义。 - 粘贴带入隐藏字符。 不可见空格、全角加号
+都会导致校验失败。 - 超过 15 位。 多半是把分机号一起填进去了。
格式对了仍然收不到码
格式只是第一关。后面还有三道:
- 平台是否支持该国号码——库存和路由都可能没有。
- 国际短信是否被过滤——见 运营商为什么过滤短信。
- 号码类型是否被拒——VoIP 号常被直接拦,见 什么是非 VoIP 号码。
完整排查清单见 接码收不到验证码怎么办。表单直接报「电话号码不正确」的情况,见 提示「此电话号码不正确」怎么办。
需要一个真实的外国号码时
格式写对了,前提还是你手上得有一个真号。四条获取路径的对比见 国外手机号如何获得,只是临时收个码的话,走接码平台最快,流程见 接码平台怎么用。
小结
+ + 国家码 + 去 0 的国内号码,总长 ≤15。 记住这一条,再对照上面的示例表确认你的国家要不要去 0,格式类报错基本就消失了。剩下收不到码的情况,问题在通道,不在写法。