Flutter - Validate a Phone Number Using Regex
In My Flutter Mobile App, I Am Trying to Validate a Phone Number Using Regex. Below Are the Conditions. Phone Numbers Must Contain 10 Digits. in Case Country...
In my Flutter mobile app, I am trying to validate a phone number using regex. Below are the conditions.
- Phone numbers must contain 10 digits.
- In case country code us used, it can be 12 digits. (example country codes: +12, 012)
- No space or no characters allowed between digits
In simple terms, here is are the only "valid" phone numbers
0776233475, +94776233475, 094776233475
Below is what I tried, but it do not work.
String _phoneNumberValidator(String value) {
Pattern pattern =
r'/^\(?(\d{3})\)?[- ]?(\d{3})[- ]?(\d{4})$/';
RegExp regex = new RegExp(pattern);
if (!regex.hasMatch(value))
return 'Enter Valid Phone Number';
else
return null;
}
How can I solve this?
5 Answers
You could make the first part optional matching either a + or 0 followed by a 9. Then match 10 digits:
^(?:[+0]9)?[0-9]{10}$
^Start of string(?:[+0]9)?Optionally match a+or0followed by 9[0-9]{10}Match 10 digits$End of string
Validation using Regex:
String validateMobile(String value) {
String pattern = r'(^(?:[+0]9)?[0-9]{10,12}$)';
RegExp regExp = new RegExp(pattern);
if (value.length == 0) {
return 'Please enter mobile number';
}
else if (!regExp.hasMatch(value)) {
return 'Please enter valid mobile number';
}
return null;
}
@override
String validator(String value) {
if (value.isEmpty) {
return 'Mobile can\'t be empty';
} else if (value.isNotEmpty) {
//bool mobileValid = RegExp(r"^(?:\+88||01)?(?:\d{10}|\d{13})$").hasMatch(value);
bool mobileValid =
RegExp(r'^(?:\+?88|0088)?01[13-9]\d{8}$').hasMatch(value);
return mobileValid ? null : "Invalid mobile";
}
}
I used the RegExp provided by @Dharmesh
This is how you can do it with null safety.
bool isPhoneNoValid(String? phoneNo) {
if (phoneNo == null) return false;
final regExp = RegExp(r'(^(?:[+0]9)?[0-9]{10,12}$)');
return regExp.hasMatch(phoneNo);
}
Usage:
bool isValid = isPhoneNoValid('your_phone_no');
String phoneNumberValidator(String value) {
Pattern pattern =
r'\+994\s+\([0-9]{2}\)\s+[0-9]{3}\s+[0-9]{2}\s+[0-9]{2}';
RegExp regex = new RegExp(pattern);
if (!regex.hasMatch(value))
return 'Enter Valid Phone Number';
else
return null;
}