【问题标题】:Validate Mobile number using regular expression使用正则表达式验证手机号码
【发布时间】:2013-02-26 11:56:29
【问题描述】:

我需要验证手机号码。我的需要:

  1. 号码可以以 +8801 或 8801 或 01 开头
  2. 下一个数字可以是 1 或 5 或 6 或 7 或 8 或 9
  3. 那么有准确的 8 位数字。

如何使用这个条件编写正则表达式?

我试过的手机号码

+8801811419556
01811419556
8801711419556
01611419556
8801511419556

【问题讨论】:

  • 用你已经尝试过的代码更新你的问题。
  • 8位手机号码???
  • 请注意——即使对于经验丰富的程序员来说,正则表达式通常也不是最容易阅读的东西。问自己一个问题:如果标准发生变化,您是否愿意进行进一步的更改?
  • @Shurmajee 实际上这个数字是 11 位数字。所有数字都以 01 开头。然后下一位数字因运营商而异。然后是运营商提供的下一个 8 位数字。

标签: regex


【解决方案1】:

应该很简单:

^(?:\+?88)?01[15-9]\d{8}$
  • ^ - 从字符串的开头
  • (?:\+?88)? - 可选88可能+开头
  • 01 - 强制 01
  • [15-9] - “1 或 5 或 6 或 7 或 8 或 9”
  • \d{8} - 8 位数字
  • $ - 字符串结束

工作示例:http://rubular.com/r/BvnSXDOYF8

2020 年更新

由于 BTRC 批准了 2 个新前缀,Grameenphone 为 013,Banglalink 为 014,现在更新了表达式:

^(?:\+?88)?01[13-9]\d{8}$

【讨论】:

  • 是的,你的看起来更好:)
  • 008801812596824 使用您的示例,此手机号码是否有效请检查并使用您给定的链接回复我rubular.com/r/BvnSXDOYF8
  • @MajbahHabib - 该问题不要求以00 开头的数字,所以没有。您可以相对轻松地更改模式,例如,假设 00 是国际访问代码:^(?:(?:\+|00)?88)?01[15-9]\d{8}$
【解决方案2】:

您可以使用任一给定的正则表达式来验证孟加拉手机号码。

解决方案 1:

/(^(\+88|0088)?(01){1}[56789]{1}(\d){8})$/

允许使用 Robi、Grameen Phone、Banglalink、Airtel 和 Teletalk 运营商手机号码。

解决方案 2:

 /(^(\+8801|8801|01|008801))[1|5-9]{1}(\d){8}$/

允许使用 Citycell、Robi、Grameen Phone、Banglalink、Airtel 和 Teletalk 运营商手机号码。

允许的手机号码模式

+8801812598624

008801812598624

01812598624

01712598624

01919598624

01672598624

01512598624

........

..................

【讨论】:

    【解决方案3】:

    如果您想快速在以下站点上使用以下正则表达式并对其进行测试

    regex pal

    [8]*01[15-9]\d{8}

    【讨论】:

      【解决方案4】:

      我知道,这个问题是很久以前提出的,但我认为@G。 M. Nazmul Hossain 想要验证所选国家/地区的手机号码。我向您展示如何使用免费库libphonenumber from Google 来做到这一点。它适用于 Java、C++ 和 Javascript,但也有适用于 PHP 的 fork,我相信还有其他语言。

      +880 告诉我它是country code for Bangladesh。让我们尝试在 Javascript 中使用以下代码验证示例编号:

      String bdNumberStr = "8801711419556"
      PhoneNumberUtil phoneUtil = PhoneNumberUtil.getInstance();
      try {
          //BD is default country code for Bangladesh (used for number without 880 at the begginning)
          PhoneNumber bdNumberProto = phoneUtil.parse(bdNumberStr, "BD");
      } catch (NumberParseException e) {
          System.err.println("NumberParseException was thrown: " + e.toString());
      }
      boolean isValid = phoneUtil.isValidNumber(bdNumberProto); // returns true
      

      该代码还将处理其中带有空格的数字(例如“880 17 11 41 95 56”),甚至在开头带有 00880(+ 有时会替换为 00)。

      demo page 上亲自尝试一下。验证所有提供的示例,甚至更多。

      【讨论】:

      • 感谢您的帮助。这很好,但它显示“8801311419556”和“8801411419556”为有效号码但这两种格式是无效的手机号码。
      • @G. M. Nazmul Hossain - 你确定,它们是无效的吗?您可以在 libphonenumber 页面上为其填写错误:github.com/googlei18n/libphonenumber/issues。谷歌在世界各地建立数据库,所以他们会错过一些东西;)
      【解决方案5】:

      在以下位置查看 libphonenumber: https://code.google.com/p/libphonenumber/

      【讨论】:

        【解决方案6】:

        孟加拉国电话号码(CitycellRobiGrameen PhoneBanglalinkAirtel em> 和 Teletalk operators) 使用正则表达式验证:

        $pattern = '/(^(\+8801|8801|01|008801))[1-9]{1}(\d){8}$/';
        $BangladeshiPhoneNo = "+8801840001417";
        
        if(preg_match($pattern, $BangladeshiPhoneNo)){
            echo "It is a valid Bangladeshi phone number;
        }
        

        【讨论】:

          【解决方案7】:
          **Laravel Bangladeshi Phone No validation for (Citycell, Robi, Grameen Phone, Banglalink, Airtel and Teletalk) and start with +88/88 then 01 then 356789 then 8 digit**  
          
          
          
          public function rules()
                  {
                      return [
          
                          'mobile' => 'sometimes|regex:/^(?:\+?88)?01[35-9]\d{8}$/',
          
                      ];
                  }
          
                  public function messages()
                  {
          
                          'mobile.regex' => 'Mobile no should be bd standard',
                      ];
                  }
          

          【讨论】:

            猜你喜欢
            • 2014-04-18
            • 1970-01-01
            • 2019-06-22
            • 1970-01-01
            • 2018-07-08
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多