C# 使用可选的+;11位之前的88或01
我使用下面的正则表达式来验证一个印度电话号码 我想要可选的+88或01前11位的电话 以下是我正在使用的:C# 使用可选的+;11位之前的88或01,c#,regex,angularjs,mobile,C#,Regex,Angularjs,Mobile,我使用下面的正则表达式来验证一个印度电话号码 我想要可选的+88或01前11位的电话 以下是我正在使用的: string mobileNumber = "+8801000000000"; if (new Regex(@"^([01]|\+88)?\d{11}").IsMatch(mobileNumber)){ MessageBox.Show("Mobile number is valide", "All information is required", MessageBoxButton
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(无效手机号)
。我用过,当13位数的时候它就失效了。它错误地更改了验证mgs
这是我的密码:
<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>
手机号码无效
使用正则表达式并与手机号码字符串匹配
我知道你试过了,但你的正则表达式不准确
$
锚点(因此,即使末尾的“abc”也不会阻止IsMatch
返回true
)01
,因此创建了一个字符类,表示0
或1
@"^(?:\+88|01)?\d{11}$"
看
更新
如果要使用此正则表达式验证孟加拉国电话号码,模式中没有任何更改(只有\r?
是完全冗余的),但如果您计划在+88
或01
之后允许13或11位数字,则需要使用一个替代选项:
ng-pattern="/^(?:\+88|01)?(?:\d{11}|\d{13})$/"
参见这里可以找到更好的答案: 这篇文章有两个很好的答案。它们的摘要 解决方案1:使用正则表达式 应该很简单:
^(?:\+?88|0088)?01[15-9]\d{8}$
-从字符串开始^
-可选(?:\+?88 | 0088)?
,可从88
或可选+
开始0088
-强制01
01
-“1或5或6或7或8或9”[15-9]
-8位数字\d{8}
-字符串结尾$
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”),甚至在Beggining处带有00880(+有时替换为00)。基本上,孟加拉国国家电话代码是880,然后是10位数字。 国际电话可以以“+”或“00”开头 国家/地区代码不用于本地呼叫,但首先必须为0 因此正则表达式如下所示:
^(((\+|00)?880)|0)(\d){10}$
您可以使用任意一个给定的解决方案来验证孟加拉国移动电话号码 正则表达式1:
/(^(\+88|0088)?(01){1}[3456789]{1}(\d){8})$/
正则表达式2
/(^(\+8801|8801|01|008801))[1|3-9]{1}(\d){8}$/
正则表达式3
(^([+]{1}[8]{2}|0088)?(01){1}[3-9]{1}\d{8})$
允许的手机号码样本
+8801812598624
0088012598624
01812598624
01712598624
01672598624
01919598624
01419598624
01319598624
etc使用这个正则表达式“^(?:+88 | 88)?(01[3-9]\d{8})$”覆盖孟加拉国的所有移动运营商,如:
- 013xxxxxxxx
- 014xxxxxxx
- 014xxxxxxx
- 016xxxxxxxx
- 017xxxxxxxx
- 018xxxxxxx
- 019xxxxxxxx
String mobileNumber ="01715254815";
if(mobileNumber.matches("^(?:\\+88|88)?(01[3-9]\\d{8})$")){
System.out.println("Yes valid");
}
这将无法确保
number
前面有01
。它将只匹配0
或1
您尝试过我的建议吗?在你这边,它是否如预期的那样工作?如果没有,请告诉我。最后,它对我来说是有效的,BKASH Mobile No.Value:它确实是很高兴的,请考虑接受这个答案。抱歉,还有个问题。如果我在01之前写手机号,超过11位,它会通知我使用的验证mgs(无效手机号!),当13位时它会失败。它错误地更改了验证mgs。。。请把它修好。Thnx@stribizhev这是我的代码:无效的手机号码
请检查我的更新。如果您还需要在01
之前支持+
:。如果加号是可选的:。请注意-您的问题标题包含孟加拉国作为国家名称,而正文中包含印度。这是一个错误还是双关语?太棒了。你救了我一天。谢谢你,兄弟。欢迎@OmarFaruqueSohag
String mobileNumber ="01715254815";
if(mobileNumber.matches("^(?:\\+88|88)?(01[3-9]\\d{8})$")){
System.out.println("Yes valid");
}