电话号码生成器和验证器 - 任何国家的测试号码
电话号码生成与验证工具可以为美国、英国、墨西哥和印度这四个国家分别生成本地格式或E.164国际标准格式的测试电话号码,同时也支持按照各国移动电话和固定电话各自的编号规则,检验任意输入的号码是否符合对应的格式要求,帮助开发者在系统上线前发现潜在的格式校验漏洞,是常用的免费测试工具。
电话号码生成器和验证器
文档
什么是电话号码生成器和验证器?
电话号码生成器会创建符合真实国家格式规则、但不属于任何真实用户的电话号码。此工具可为美国、英国、墨西哥和印度生成测试电话号码。它可以生成手机号码或固定电话号码,采用本地格式或国际 E.164 格式,并根据相应国家的编号规则检查结果。该工具用于测试软件,不用于拨打真实电话或发送短信。
生成器如何构建号码
工具创建的每个号码都由两部分组成:固定的区号和一组随机数字。
-
国家和地区。 每个受支持的国家列出四个示例地区(例如美国的纽约、加利福尼亚、得克萨斯和佛罗里达)。每个地区对应一个真实区号,因此选择“加利福尼亚”始终会得到区号 213,选择“纽约”始终会得到 212。
-
手机或固定电话。 英国和印度的手机号码与固定电话号码使用不同的前缀。对于美国和墨西哥,此工具对手机号码和固定电话号码使用同一组区号,因为它没有为这两个国家单独设置仅供手机使用的号段。
-
随机数字。 工具会用随机数字填充号码的其余部分,使总长度固定为 10 位。公式很简单:
随机数字 = 10 − 区号长度
对于像 55 这样的 2 位墨西哥区号,需要 8 位随机数字。对于像 213 这样的 3 位美国区号,需要 7 位随机数字。
-
**美国的例外情况。**美国号码遵循北美编号计划(NANP)。在3位区号之后,接下来的3位数字(交换局代码)必须以2至9中的某个数字开头,并且不能是911或411这类服务代码。该工具会反复重新生成这3位数字,直到符合要求,然后再随机补上4位数字作为线路号码。
-
格式化。 完成后的数字会进行分组;如果选择国际格式,则会在号码前加上加号和国家代码,遵循 E.164 格式。
支持的国家和区号
| 国家 | 示例地区及其固定区号 | 总位数 | 手机前缀规则 |
|---|---|---|---|
| 美国(+1) | 纽约 212、加利福尼亚 213、得克萨斯 214、佛罗里达 305 | 10 | 与固定电话使用相同的区号 |
| 英国(+44) | 伦敦 20、曼彻斯特 161、伯明翰 121、格拉斯哥 141(固定电话);手机使用 7700–7703 | 10 | 以 7 开头 |
| 墨西哥(+52) | 墨西哥城 55、瓜达拉哈拉 33、蒙特雷 81、坎昆 998 | 10 | 与固定电话使用相同的区号 |
| 印度(+91) | 德里 11、孟买 22、班加罗尔 80、金奈 44(固定电话);手机使用 6、7、8、9 中的一个前缀 | 10 | 以 6、7、8 或 9 开头 |
在这个工具中,四个国家都生成10位的国内号码。这与美国和印度的实际情况相符,也与墨西哥相符,因为墨西哥自2019年8月3日起所有号码均为10位。对英国而言这是一种简化,因为英国实际的编号计划允许存在一些差异。
示例:墨西哥城手机号码
- 国家:墨西哥(+52)。地区:墨西哥城,该地区固定使用区号 55。
- 号码类型:手机。墨西哥的手机前缀与固定电话前缀相同,因此前缀仍为 55。
- 所需的随机数字位数:10 − 2 = 8。假设该工具生成了12345678。
- 合并后的数字:5512345678。
- 按照墨西哥的格式分组(对于 2 位区号,采用 2-4-4 格式):55 1234 5678。
- 国际格式会添加国家代码:+52 55 1234 5678。本地格式会省略国家代码:55 1234 5678。
示例:美国号码与 NANP 规则
- 国家:美国(+1)。地区:加利福尼亚,该地区固定使用区号 213。
- 所需随机数字:10 − 3 = 7。工具会生成一个以 2–9 开头、且不是 N11 代码的 3 位交换局代码,然后再生成 4 位数字。假设生成的代码为 555 和 0199。
- 合并后的数字:2135550199。
- 按 NANP 的3-3-4分组方式:213 555 0199。
- 国际格式:+1 213 555 0199。
线路号码555-0100至555-0199被保留为虚构号码,因此这个示例不会拨通真实的电话。
由于生成过程中会执行交换局代码规则检查,该号码始终能通过工具自身的验证。
E.164:国际格式
E.164 是国际电信联盟(ITU)于1984年制定的编号标准。它将电话号码限制在15位数字以内,并要求在书写国际使用的号码时,在国家代码前加加号,例如+52 55 1234 5678。存储电话号码的软件通常首选 E.164,因为它可以消除歧义:像+15551234567这样的号码本身就能表明所属国家,而像(555) 123-4567这样按本地方式书写的号码则不能。
此工具如何进行验证
点击“生成”会同时创建并检查号码,并在号码旁显示“有效”或“无效”标记。检查内容包括:
- 长度。 国内号码必须恰好为 10 位;如果采用国际格式,还要加上国家代码。
- 美国交换局代码和区号。 3 位区号和 3 位交换局代码都必须以 2–9 开头,并且不能是 911 这类 N11 代码。
- 印度手机号码。 第一位必须是 6、7、8 或 9。
- 英国手机号码。 号码必须以 7 开头。
由于生成器已经按照这些相同规则构建号码,新生成的号码通常会显示为有效。该检查主要用于直观演示开发者验证真实用户输入的电话号码时所采用的相同逻辑。
常见问题
这些是能接收电话或短信的真实电话号码吗? 不是。它们是随机生成的,符合各自国家的正确格式,但并未分配给任何真实的用户。它们可能碰巧与某个真实号码相同,因此不应用于拨打电话或发送信息。
国际格式和本地格式有什么区别? 国际格式以加号和国家代码开头,例如+52 55 1234 5678。本地格式省略国家代码,例如55 1234 5678,即在该国国内拨号时的写法。
为什么美国和墨西哥的号码不区分手机与固定电话,而英国和印度的号码区分? 在美国和墨西哥,该工具对手机号码和固定电话号码使用同一份区号列表,因此同一地区生成的“手机”号码与“固定电话”号码看起来可能完全相同。英国和印度的手机号码与固定电话号码使用各自独立的前缀列表,所以这两类号码看起来不同。
这个工具会存储或发送它生成的号码吗? 不会。生成和验证都在浏览器中完成。不会向服务器发送任何内容,关闭页面后也不会保存任何内容。
生成的号码可以用于正式上线的应用吗? 只应用于开发和测试。它们不是经过验证的可用号码,不应作为真实的客户数据存储。
如何在自己的代码中验证电话号码? 为每个国家的格式定义一个正则表达式,去除输入中的空格和标点,再将其与预期的长度和前缀规则进行比对,类似于上文介绍的检查。若要在正式环境中支持多个国家,使用 Google 的 libphonenumber 这类持续维护的库,比手写的正则表达式能处理多得多的特殊情况。
参考文献
- 北美编号计划管理机构(North American Numbering Plan Administrator)。Glossary。NANPA 术语表 — NXX 形式的区号或中心局代码中,N = 2–9,X = 0–9。
- 北美编号计划管理机构(North American Numbering Plan Administrator)。Abbreviated Codes (N11 codes)。N11 代码 — N11 代码提供三位数的拨号方式,用于接入911等特殊服务。
- 北美编号计划管理机构(North American Numbering Plan Administrator)。555 Line Numbers。555 线路号码 — 555-0100至555-0199是虚构的、不可用的号码。
- 墨西哥联邦电信研究所(Instituto Federal de Telecomunicaciones)。Cambios en la marcación telefónica。Cambios en la marcación telefónica — 自2019年8月3日起,墨西哥所有号码均为10位;墨西哥城使用55,瓜达拉哈拉使用33,蒙特雷使用81。
- 国际电信联盟(International Telecommunication Union)。Recommendation ITU-T E.164。ITU-T E.164 各版本 — 第一版 E.164/I.331 的日期为1984年十月。