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'); 2String 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; }