电话号码生成器和验证器 - 任何国家的测试号码
电话号码生成与验证工具可以为美国、英国、墨西哥和印度这四个国家分别生成本地格式或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 位。这符合美国和印度的实际情况,但对英国和墨西哥而言是简化处理,因为这两个国家的实际编号计划允许一定变化。
示例:墨西哥城手机号码
- 国家:墨西哥(+52)。地区:墨西哥城,该地区固定使用区号 55。
- 号码类型:手机。墨西哥的手机前缀与固定电话前缀相同,因此前缀仍为 55。
- 所需随机数字:10 − 2 = 8。假设工具生成 12,345,678。
- 合并后的数字: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。
由于生成过程中会执行交换局代码规则检查,该号码始终能通过工具自身的验证。
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 等经过维护的库,可以处理比手写正则表达式多得多的边界情况。