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

6 投票
3 回答
4776 浏览
提问于 2025-04-16 00:28

有没有简单的方法可以检查用户输入的电话号码是否包含国家代码,并且验证这个号码是否正确?我不使用任何特定的格式,号码本身只能是数字,不允许有括号、短横线之类的符号。这样的验证是否可以在不询问用户国家的情况下进行?我的想法是我想处理全球所有的号码。

我觉得用正则表达式可能做不到(我查了一下,发现很多相关的内容,但都不是针对这个问题)。有没有什么库可以用?我在用Python。

或者,也许强制使用某种格式会更合理,比如 X-YYYYYYYY...,其中 X 是国家代码,类似这样的格式?

3 个回答

2

像247 8000这样的号码可能有几种意思:

  • 它可能是某个国家、某个地区的本地号码247 8000,可能完整的格式是+1 212 247 8000。
  • 它也可能是247区号下的本地号码8000,可能完整的格式是+269 247 8000。
  • 或者,它可能是247国家代码下的本地号码8000,完整格式是+247 8000。

没有更多的背景信息,我们很难判断它具体代表什么。

这里的+符号很重要,它帮助我们识别国家代码的部分。

4

这里有一个谷歌的库,用来处理电话号码(这个是用Java写的)。不过,谷歌也在用Python,所以我想他们可能在某个地方有Python版本,或者你也可以提取你需要的部分,然后自己翻译成Python代码。

2

我研究了这个问题一段时间。我们有一个很大的数据库,里面有很多电话号码,但没有人知道这些号码是否带有国家代码。一般来说,答案是:这几乎是不可能搞清楚的。我们有一些号码是有效的美国号码,但没有国家代码(1),还有一些其他国家的号码是带区号的。不过在99%的情况下,你可以通过检查号码的长度来判断,如果长度是9位,那基本上就没有国家代码。你应该要求用户输入国家代码。

撰写回答