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

Md *_*ury 4 c# regex mobile angularjs

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

我想在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);
}
Run Code Online (Sandbox Code Playgroud)

我该怎么做?

UPDATE

如果我写手机没有.在此之前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>
Run Code Online (Sandbox Code Playgroud)

Maj*_*bib 8

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

正则表达式1

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

正则表达式2

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

正则表达式3

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

允许的手机号码样本

8801812598624

008801812598624

01812598624

01712598624

01672598624

01919598624

等等


Wik*_*żew 6

我看到您已经尝试过,但是您的正则表达式不正确。

  1. 您不使用字符串$锚的结尾(因此,即使结尾处的“ abc”也不会阻止IsMatch返回true
  2. 您正在使用01内方括号从而创建一个字符类,这意味着无论是01
  3. 这里不需要捕获组,对于可选的子模式,最好不要进行捕获。
  4. 正如后续答案中指出的那样,您使用的正则表达式实际上并不能满足孟加拉国电话号码的所有要求,请参阅Kobi的^(?:\+?88|0088)?01[15-9]\d{8}$答案。

为了创建一个正则表达式来验证具有“可选+88或01开头为11位数字”的字符串,您需要以下内容:

@"^(?:\+88|01)?\d{11}$"
Run Code Online (Sandbox Code Playgroud)

参见RegexStorm演示

更新

如果你想用这个正则表达式来验证孟加拉电话号码,没有什么变化的格局(仅\r?完全是多余的),但是如果你打算让13个或11位数字后+88或者01,你需要使用的交替:

ng-pattern="/^(?:\+88|01)?(?:\d{11}|\d{13})$/"
Run Code Online (Sandbox Code Playgroud)

观看演示

  • 请检查我的更新。如果还需要在`01`之前支持`+`:[`/^\+(?:88|01)?(?:\d{11}|\d{13})$/`](https: //regex101.com/r/cD5pE5/3)。如果加号是可选的:[`/^(?:\+?(?:88|01)?)(?:\d{11}|\d{13})$/`](https://regex101 .com/r/cD5pE5/2)。 (2认同)

Emd*_*won 5

在这里可以找到更好的答案:使用正则表达式验证手机号码

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

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

应该很简单:

^(?:\+?88|0088)?01[15-9]\d{8}$
Run Code Online (Sandbox Code Playgroud)
  • ^ -从字符串的开头
  • (?:\+?88|0088)?-可选88可以以开头+或可选0088
  • 01 -强制性 01
  • [15-9] -“ 1或5或6或7或8或9”
  • \d{8} -8位数字
  • $ -字符串结尾

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

解决方案2:使用库

从Google下载此免费库libphonenumber。它适用于Java,C ++和Javascript,但也适用于PHP和其他语言。

+880告诉我这是孟加拉国国家代码。让我们尝试使用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
Run Code Online (Sandbox Code Playgroud)

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