电话号码校验与格式化

按各国官方号簿规划校验任意电话号码,分清"真实有效"还是"仅长度合理",并排给出 E.164、国际、国内、RFC3966 四种格式。

同时提供 Windows 桌面版。

关于这个工具

电话号码看起来简单,其实不然:英国手机号填进美国表单会被拒;开头的 0 悄悄消失;"一共 10 位,应该没错"的号码查下来根本不属于任何人。裁定这一切的规则写在各国的**号簿规划**里 —— 上百份规划还在不断修订 —— 没有人能把它们全装在脑子里。

本工具用这些规划来校验号码。选好号码所属的国家(或直接输入带 + 国家码的号码),你会得到**三层分立**的结论:有效 —— 符合该国真实分配的号段;仅长度合理 —— 位数符合规划、但不在任何真实号段里;或者两者都不是。这个区分很重要:"长度合理但无效"正是那种能骗过朴素位数检查、最后照样退信的经典笔误。

判定结果旁边并排给出各种标准格式:E.164(数据库和 API 要的无歧义 +国家码号码 形式)、带正确空格的国际/国内显示格式,以及用于点击拨号链接的 RFC3966 tel: URI。号簿规划能识别时,还会给出号码类型 —— 手机、固话、免费电话、网络电话。每个国家都有官方示例号(与判定同源的数据集),随时可以拿一个有效号码来试。

校验数据来自 Google 的 libphonenumber 数据集,直接打包进页面:你输入的号码不会被发送到任何地方,断网也能用。

常见问题

"有效"和"仅长度合理"有什么区别?
长度合理指位数符合该国的规划;有效指号码落在规划中**真实分配**的号段里 —— 10 位是美国号码的合理长度,但 131-234-5678 不是任何人持有的号码。表单校验应当要求"有效";只查位数就会放过这类笔误。
号码都带 + 国家码了,为什么还要选国家?
很多时候不用:带 + 国家码的号码是自描述的,国家选择器会被忽略。选择器是为**本地写法**准备的 —— 比如不带 + 的 020 7946 0958,只有先知道国家才有意义。
E.164 是什么?为什么数据库都要它?
E.164 是国际标准形式:+ 开头,接国家码,再接去掉前导 0、不含任何空格的国内号码,总长不超过 15 位。它是无歧义的 —— 同一号码的三种写法折叠成同一个 E.164 字符串 —— 这正是 API、CRM 和验证服务都用它存号码的原因。
显示"有效"就说明这个号存在吗?
不是 —— 任何离线工具都做不到。有效只说明号码落在运营商**实际分配号码的号段之内**;这个具体号码是否在用、归谁,只能通过联系它来确认(比如走一次短信验证流程)。
数据有多新?
它是 Google 的 libphonenumber 数据集 —— Android 拨号盘和大多数号码验证库背后的同一份数据 —— 在构建时打包。号簿规划确实会变,所以遇到意外的"无效",请把它当作复核的提示,而不是终审判决。
我查的号码会被存储或上传吗?
不会。数据集随页面一起分发,全部计算在浏览器本地完成,断网状态下照常可用。

相关工具