【问题标题】:PHP - RegEx Matching Phone Numbers with or without country codePHP - RegEx 匹配有或没有国家代码的电话号码
【发布时间】:2012-05-04 00:46:17
【问题描述】:

我想在php中编写一个匹配方法,让我可以匹配电话号码。

我的情况是我想构建一个应用程序,该应用程序将从Android设备中提取电话联系人号码,在后端,它将电话联系人与当前应用程序用户进行匹配,如果有匹配,则添加这些用户作为朋友,类似于 whatsapp 在将电话联系人与设备中装有 whatsapp 应用的用户匹配时所做的事情。

我现在遇到的问题是如何编写一个正则表达式来匹配带有/不带有国家代码或前导零的电话号码。

在应用程序中,我要求输入用户国家和电话号码,例如我的一个朋友输入了这些值: 国家 : 约旦 (+962) 电话号码:799633999 这在后端将存储为 +962799633999

如果我们假设我将我的朋友号码设为 0799633999,我可以使用什么正则表达式将 0799633999 与 +96279963999 匹配?

【问题讨论】:

    标签: php android regex cordova mobile-country-code


    【解决方案1】:

    参考this链接你可以使用这个正则表达式:

    ^([0|\+[0-9]{1,5})?([7-9][0-9]{9})$
    

    php代码:

    $re = '/^([0|\+[0-9]{1,5})?([7-9][0-9]{9})$/';
    $str = '+2529371208646';
    
    preg_match_all($re, $str, $matches);
    
    print_r($matches);
    

    【讨论】:

      【解决方案2】:

      你的正则表达式是#(\+\d+|0)(\d{9})$#

      【讨论】:

      • 但国家代码并不总是 3 位数字,我试图找到一个考虑任何国家代码的通用正则表达式
      【解决方案3】:

      你不能用正则表达式来做这件事。 截断前导零和国家代码并进行常规字符串比较。

      如果联系人可以来自不同国家/地区,请添加您正在寻找朋友的国家/地区代码。

      【讨论】:

      • 我希望 REGEX 会为我截断它,并通过排除前导零和国家代码来进行匹配。只是我无法猜测电话联系人中的号码是否带有前导零/国家/地区代码,因此正则表达式将确保从两个字符串中排除它并进行匹配,不是吗?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-10-12
      • 2017-04-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-19
      • 2017-11-22
      相关资源
      最近更新 更多