使用可选的+88或01前面的11位数来验证孟加拉国的电话号码
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用可选的+88或01前面的11位数来验证孟加拉国的电话号码相关的知识,希望对你有一定的参考价值。
我使用以下正则表达式来验证印度的电话号码。
我想在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);
}
我该怎么做?
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}
?$/" />
<p class="help-block" ng-show="form.BkashWalletNo.$error.pattern">Not valid mobile no.!</p>
我看到你已经尝试但你的正则表达式不准确。
- 你不使用字符串
$
锚的结尾(因此,即使“abc”在最后也不会阻止IsMatch
返回true
) - 你在方括号内使用
01
,从而创建一个字符类,意思是0
或1
。 - 这里不需要捕获组,非捕获最适合可选的子模式。
为了创建一个正则表达式,它将验证具有“可选+88或01前11位数字”的字符串,您需要以下内容:
@"^(?:+88|01)?d{11}$"
UPDATE
如果你想用这个正则表达式验证孟加拉国的电话号码,模式没有任何变化(只有
?
是完全冗余的),但是如果你计划在+88
或01
之后允许13或11位数,你需要使用一个替换:
ng-pattern="/^(?:+88|01)?(?:d{11}|d{13})$/"
见demo
您可以使用任何一种给定的解决方案来验证孟加拉国的手机号码。
正则表达式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
等等
可以在这里找到更好的答案: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替换)。
基本上,孟加拉国的国家电话代码是880,然后是10位数。对于国际电话,它可以以“+”或“00”开头。
国家/地区代码不用于本地呼叫,但最初必须为0。
所以正则表达式将如下所示:
^(((+|00)?880)|0)(d){10}$
以上是关于使用可选的+88或01前面的11位数来验证孟加拉国的电话号码的主要内容,如果未能解决你的问题,请参考以下文章
Laravel:如何使用验证规则之前和之后验证两个可选的日期字段