
In my Flutter mobile app, I am trying to validate a phone number using regex
. Below are the conditions.
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+
or0
followed 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; }
ncG1vNJzZmirpJawrLvVnqmfpJ%2Bse6S7zGiorp2jqbawutJobG5tZWd%2FdHyOn6OurKSav27CwKWgnZmkmnqiec%2BhpqedXaPCrq7Eq2Suq5mjtG6%2BxKCcsQ%3D%3D