I am using the following regular expression to validate an Indian phone number.
I want optional +88 or 01 before 11 digits of phone.
Here is what I am using:
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);
}
How can I do it?
UPDATE
If I write mobile no. preceding 01, for more than 11 digit it notify validation mgs(Not valid mobile no.!). Well I used, it fails when 13 digit. It alters validation mgs wrongly.
Here is my code:
<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>
You may use any one of given solution to validate Bangladeshi mobile number.
regular expression 1:
/(^(\+88|0088)?(01){1}[3456789]{1}(\d){8})$/
regular expression 2
/(^(\+8801|8801|01|008801))[1|3-9]{1}(\d){8}$/
regular expression 3
(^([+]{1}[8]{2}|0088)?(01){1}[3-9]{1}\d{8})$
Allowed mobile number sample
+8801812598624
008801812598624
01812598624
01712598624
01672598624
01919598624
01419598624
01319598624
etc
I see you have tried but your regular expression is not accurate.
$ (so even "abc" at the end won't prevent IsMatch returning true )01 in square brackets, thus creating a character class, which means 0 or 1 .^(?:\+?88|0088)?01[15-9]\d{8}$ answer. To create a regular expression that validates a string that has " optional +88 , 0088 , or 01 preceding 11 digits ", you need something like:
@"^(?:(?:\+|00)88|01)?\d{11}$"Watch the RegexStorm demo
TO UPDATE
If you want to validate Bangladeshi phone numbers with this regular expression, nothing changes in the pattern (only \r? is totally redundant), but if you plan to allow 13 or 11 digits after +88 or 01 , you should use an alternation:
ng-pattern="/^(?:(?:\+|00)88|01)?\d{11}$/"See demo
In Angular:
Validators.pattern('(?:(?:\\+|00)88|01)?\\d{11}') // or Validators.pattern(/^(?:(?:\+|00)88|01)?\d{11}$/)A better answer can be found here: Validate Mobile number using regular expression
There is two good answer in this post. Summary of them
Should be pretty simple:
^(?:\+?88|0088)?01[15-9]\d{8}$
^ - From start of the string(?:\+?88|0088)? - optional 88, which may begin in + or optional 008801 - mandatory 01[15-9] - "1 or 5 or 6 or 7 or 8 or 9"\d{8} - 8 digits$ - end of the stringWorking example: http://rubular.com/r/BvnSXDOYF8
Download this free library libphonenumber from Google. It's available for Java, C++ and Javascript, but there're also fork for PHP and, i believe, other languages.
+880 tells me that it's country code for Bangladesh. Let's try to validate example numbers with following code in 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
That code will handle also numbers with spaces in it (for example "880 17 11 41 95 56"), or even with 00880 at the beggininng (+ is sometimes replaced with 00).