7

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

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

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

我试过的手机号码

+8801811419556
01811419556
8801711419556
01611419556
8801511419556
4

7 回答 7

27

应该很简单:

^(?:\+?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}$
于 2013-02-26T12:07:12.323 回答
3

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

解决方案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

......

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

于 2017-09-19T08:10:38.057 回答
1

我知道,这个问题是很久以前提出的,但我认为@GM Nazmul Hossain 想要验证所选国家的手机号码。我向您展示如何使用Google 提供的免费库 libphonenumber 进行操作。它适用于 Java、C++ 和 Javascript,但也有适用于 PHP 的 fork,我相信还有其他语言。

+880 告诉我这是孟加拉国的国家代码。让我们尝试在 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)。

在演示页面上自己尝试一下。验证所有提供的示例甚至更多。

于 2015-03-02T19:18:05.663 回答
1

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

正则表达式

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

于 2013-02-26T14:03:03.840 回答
0

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

于 2013-03-05T13:55:48.720 回答
0
**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',
            ];
        }
于 2019-07-17T05:57:51.553 回答
0

使用正则表达式验证孟加拉电话号码(CitycellRobiGrameen PhoneBanglalinkAirtelTeletalk 运营商):

$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;
}
于 2017-08-30T19:07:37.237 回答