使用可选的+88或01前面的11位数来验证孟加拉国的电话号码

时间:2015-06-05 05:29:00

标签: c# regex angularjs mobile

我使用以下正则表达式来验证印度的电话号码。

我想在手机的11位数之前选择+88或01。

以下是我正在使用的内容:

string mobileNumber = "+8801000000000";
if (new Regex(@"^([01]|\+88)?\d{11}").IsMatch(mobileNumber)){
    MessageBox.Show("Mobile number is valide", "All information is required", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
}
else{
     MessageBox.Show("Mobile number is not valide", "All information is required", MessageBoxButtons.OK, MessageBoxIcon.Error);
}

我该怎么办?

更新

如果我写手机没有。在01之前,对于超过11位的数字,它会通知验证mgs(Not valid mobile no.!)。好吧,我使用过,当13位数时失败。它错误地改变了验证错误。

这是我的代码:

<input type="text" placeholder="Enter bKash wallet number" 
  class="form-control" ng-model="BkashWalletNo" ng-disabled="AutoConfirmed" 
    name="BkashWalletNo" ng-pattern="/^(?:\+88|01)?\d{11}\r?$/" />
<p class="help-block" ng-show="form.BkashWalletNo.$error.pattern">Not valid mobile no.!</p>

7 个答案:

答案 0 :(得分:7)

您可以使用任何一种给定的解决方案来验证孟加拉国的手机号码。

正则表达式1

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

正则表达式2

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

正则表达式3

 (^([+]{1}[8]{2}|0088)?(01){1}[5-9]{1}\d{8})$

允许的手机号码样本

8801812598624

008801812598624

01812598624

01712598624

01672598624

01919598624

答案 1 :(得分:4)

我看到你已经尝试过,但你的正则表达式并不准确。

  1. 您不使用字符串$锚点的结尾(因此,即使&#34; abc&#34;最后也不会阻止IsMatch返回true)< / LI>
  2. 您在方括号内使用01因此创建了一个字符类,这意味着 01
  3. 此处不需要捕获组,非捕获最适合可选的子模式。
  4. 为了创建一个正则表达式,该正则表达式将验证一个字符串,该字符串具有&#34;可选+88或01之前的11位&#34;,您需要以下内容:

    @"^(?:\+88|01)?\d{11}$"
    

    请参阅RegexStorm demo

    <强>更新

    如果您想使用此正则表达式验证孟加拉国电话号码,模式中没有任何变化(仅\r?完全是多余的),但如果您计划在{{1}之后允许13或11位数,则 }或+88 ,您需要使用替换:

    01

    请参阅demo

答案 2 :(得分:4)

可在此处找到更好的答案:Validate Mobile number using regular expression

这篇文章有两个很好的答案。他们的总结

解决方案-1:使用正则表达式

应该很简单:

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

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

解决方案-2:使用库

下载此免费图书馆libphonenumber from Google。它可用于Java,C ++和Javascript,但也有PHP的分支,我相信,其他语言。

+880告诉我它是country code for Bangladesh。让我们尝试使用Java中的以下代码验证示例数字:

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”),或者甚至在beggininng处使用00880(+有时会替换为00)。

答案 3 :(得分:0)

基本上,孟加拉国的国家电话代码是880,然后是10位数。 它可能以&#39; +&#39;开头。或者&#39; 00&#39;为了国际电话。

国家/地区代码不用于本地通话,但最初必须为0。

所以正则表达式如下所示:

^(((\+|00)?880)|0)(\d){10}$

答案 4 :(得分:0)

使用此正则表达式“ ^(?:+ 88 | 88)?(01 [3-9] \ d {8})$”可以覆盖孟加拉国的所有移动运营商,例如:

  • 013xxxxxxxx
  • 014xxxxxxxx
  • 014xxxxxxxx
  • 016xxxxxxxx
  • 017xxxxxxxx
  • 018xxxxxxxx
  • 019xxxxxxxx

示例:

String mobileNumber ="01715254815";

if(mobileNumber.matches("^(?:\\+88|88)?(01[3-9]\\d{8})$")){
    System.out.println("Yes valid");
}

答案 5 :(得分:0)

我的 JavaScript 解决方案,适用于孟加拉语所有手机号码验证,带有额外的孟加拉语到英语转换。此解决方案也适用于孟加拉语号码

几个示例和示例输出

valid_mobile('+8801736458080');
/* Output "01736458080" */

valid_mobile('8801736458080');
/* Output "01736458080" */

valid_mobile('01736458080');
/* Output "01736458080" */


valid_mobile('+৮৮০১৭৩৬৪৫৮০৮০');
/* Output "01736458080" */



/*
    * Validate Bangladeshi mobile number
    * @author: Lincoln Mahmud
    * @company: Purple Patch
*/

function valid_mobile ( value ) {
    /*When value not number then try to convert bangla to english number*/
    if (isNaN(value)) {
        value = translteBanglaToEngNum(value);
    }
    valid_number = value.match("(?:\\+88|88)?(01[3-9]\\d{8})"); /*Regular expression to validate number*/
    /*When valid return without +88/88 number if exist*/
    if(valid_number){
        return valid_number[1]; /*valid number method return 3 with actual input*/
    } else {
        return false; /*return false when not valid*/
    }
}

/*
    * Bangla to English number conversion method
    * @author: Lincoln Mahmud
    * @company: Purple Patch
*/

function translteBanglaToEngNum( num_str ){
    var bengali = {"০":0, "১":1, "২":2, "৩":3, "৪":4, "৫":5, "৬":6, "৭":7, "৮":8, "৯":9};
    var changed_nun='';
    num_str.toString().split('').forEach(l => {
        if(isNaN(l)){changed_nun += bengali[l];}else{changed_nun +=l;}
    });
    return changed_nun;
}

答案 6 :(得分:0)

此正则表达式将在以下条件下有效

  • +880 1760 123128
  • +(+880)-1760-123128
  • +8801996409999
  • +8801760-123128
[+,' '][\d]{7}[-,$,' ',][\d]{0,6}|[+,' '][\d]{3}[,-,$,' ',][\d]{4}[-,$,' ',][\d]{0,6}|[(][(+,' '][\d]{3}[)][-,$,' '][\d]{4}\b[-,$,' ',][\d]{0,6}|[[+,' '][\d]{3}[-,$,' ',][\d]{4}[-,$,' ',][\d]{0,6}|[(][(+,' '][\d]{3}[)][-,$,' '][\d]{4}\b[-,$,' ',][\d]{0,6}|[+' '][\d]{0,13}|[+,' '][\d]{0,7}[-,$,' ',][\d]{0,6}