Md. Imran Choudhury Md. Imran Choudhury - 1 year ago 167
AngularJS Question

Validate Bangladeshi phone number with optional +88 or 01 preceeding 11 digits

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);
MessageBox.Show("Mobile number is not valide", "All information is required", MessageBoxButtons.OK, MessageBoxIcon.Error);

How can I do it?


If I write mobile no. preceding
, 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>

Answer Source

I see you have tried but your regex is not accurate.

  1. You do not use an end of string $ anchor (thus, even "abc" at the end will not prevent the IsMatch from returning true)
  2. You are using 01 inside square brackets thus creating a character class, meaning either 0 or 1.
  3. No need in a capturing group here, a non-capturing is best for optional subpatterns.

In order to create a regex that will validate a string that has "optional +88 or 01 preceeding 11 digits", you need something like:


See RegexStorm demo


If you want to validate Bangladeshi phone numbers with this regex, 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 need to use an alternation:


See demo