带国家代码检查的电话号码正则表达式(RegEx)


Regular Expression (RegEx) For Phone Numbers With Country Code Check

我需要一个PHP RegEx,通过它我可以使用以下标准验证电话号码格式:

  • 不应该包含除数字以外的任何内容;
  • 不应该以零开头,因为我需要国家代码前缀;
  • 允许的国家代码列表应该在RegEx中;
  • 紧跟在国家代码后面的数字不应该是零;
  • 号码长度不能超过13位。

我试图搜索堆栈溢出张贴这个问题之前,但无法找到确切的解决方案。如有任何帮助,我将不胜感激。

编辑:我只是希望用户在有效格式中输入电话号码,因为目前我的客户在编写时犯了一些愚蠢的格式错误。我并不担心它实际上是有效的(可调用的),因为用户会自己处理它。

我可不想在这上面烧手指。

仅仅通过看一个电话号码你不能判断它是否有效,即使它"看起来"有效,它也可能不是你要找的电话号码。别人的电话号码)

你试图在错误的层次上解决问题。验证电话号码的唯一方法是调用它;)

满足条件的正则表达式:

/^(1|20|21|..etc)[1-9][0-9]+$/

国家代码列表(以|分隔)后面跟着非0的数字,后面跟着任意数字任意次。

您不能在一个正则表达式中进行13长度检查和国家检查,因为国家代码的长度各不相同(至少据我所知)。你可以用一个通用的正则表达式来检查13个长度,比如:

/^.{,13}$/

匹配长度不超过13个字符

紧跟国家代码后面的数字不应该是零;

这个体系对意大利来说将会失败。意大利电话号码的前导0是从国外拨打的

可能在其他一些国家也会发生这种情况,但意大利是最著名的。

号码长度不能超过13位。

对于较短但添加了扩展名的号码,该规则在多个国家将被打破。

3位国家代码,3位区号,8位用户号码,你少了一个数字。