用户输入的电话号码是否包含国家代码如何检查?

6
有没有一种简单的方法来检查用户输入的电话号码是否包括国家代码,并验证号码是否正确?我不使用任何特定的格式,号码本身必须只包含数字,没有('s,-'s等。这样的验证是否可能而不向用户询问国家?诀窍在于我想处理全球所有号码。
我猜不能用正则表达式完成(搜索了一下,发现很多东西但不是针对这个问题)。有没有相关的库?我正在使用Python。
或者也许强制采用格式,例如X-YYYYYYYY......其中X将是国家代码,或类似的东西,会更有意义吗?

1
欢迎来到 Stack Overflow!电话号码是个噩梦。 - Paul D. Waite
3个回答

4

这里是Google电话号码处理库(使用Java编写)。然而,由于Google也使用Python,我想他们可能有一个Python版本可用,或者您可以提取所需内容并进行翻译。


它不起作用。我输入了我的手机号码,但没有加号,并将美国设置为默认值。它无法解析它。因此,它是无用的。在我的答案中,我提供了一个情况,当不能做出任何特定的假设时。 - Andrey
我不知道你的电话号码,所以无法确定它在你的情况下是否有效,但是当我输入我的或任何其他10位数字而没有前导加号并设置为美国时,它会正确解析。我不确定区别在哪里。 - Andy
很棒的库!感谢分享。这是仓库的新位置:https://github.com/googlei18n/libphonenumber - coder9

2

我曾经学习过这个主题。我们有一个巨大的数字数据库,没有人知道它们是否带有国家代码。一般的答案是:不可能找出来。我们有一些数字是有效的美国号码,没有国家代码(1),还有一些其他国家的区号。但对于99%的情况,你可以检查号码长度是否为9,如果是,则没有国家代码。你应该强制用户输入国家代码。


2

像247 8000这样的数字可能是:

  • 在未指定的国家地区中,可能是+1 212 247 8000的当地号码247 8000
  • 在未指定的国家中,可能是247地区代码的当地号码8000,也许是+269 247 8000
  • 作为+247 8000的247国家代码的当地号码8000。

没有更多的上下文,无法确定。

+符号对于识别国家代码部分至关重要。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接