Dart/Flutter – How to validate a phone number

Like any other programming language, Dart supports RegExp (Regular Expression). In this post I will show you how to validate Phone number using RegExp in Dart.

First, we write a method to validate the phone number:

///
/// Check if a phone number if valid or not.
/// [phoneNumber] The phone number which will be validated.
/// Return true if the phone number is valid. Otherwise, return false.
bool isValidPhoneNumber(String string) {
  // Null or empty string is invalid phone number
  if (string == null || string.isEmpty) {
    return false;
  }

  // You may need to change this pattern to fit your requirement.
  // I just copied the pattern from here: https://regexr.com/3c53v
  const pattern = r'^[+]*[(]{0,1}[0-9]{1,4}[)]{0,1}[-\s\./0-9]*$';
  final regExp = RegExp(pattern);

  if (!regExp.hasMatch(string)) {
    return false;
  }
  return true;
}

Then we do some tests:

main() {
  final emptyPhoneNumber = '';
  final phoneNumber1 = '000';
  final phoneNumber2 = '0971234567';
  final phoneNumber3 = '+84 0971234567';
  final phoneNumber4 = '+84 971234567';
  final phoneNumber5 = '+840971234567';
  final phoneNumber6 = '+84971234567';
  final phoneNumber7 = '084971234567';
  final phoneNumber8 = '84971234567';

  print('Empty string -> ${isValidPhoneNumber(emptyPhoneNumber)}');
  print('$phoneNumber1 -> ${isValidPhoneNumber(phoneNumber1)}');
  print('$phoneNumber2 -> ${isValidPhoneNumber(phoneNumber2)}');
  print('$phoneNumber3 -> ${isValidPhoneNumber(phoneNumber3)}');
  print('$phoneNumber4 -> ${isValidPhoneNumber(phoneNumber4)}');
  print('$phoneNumber5 -> ${isValidPhoneNumber(phoneNumber5)}');
  print('$phoneNumber6 -> ${isValidPhoneNumber(phoneNumber6)}');
  print('$phoneNumber7 -> ${isValidPhoneNumber(phoneNumber7)}');
  print('$phoneNumber8 -> ${isValidPhoneNumber(phoneNumber8)}');
}

And here is the output:

Empty string -> false
000 -> true // I am not really sure if there is any phone number like this, but it looks incorrect!!!
0971234567 -> true
+84 0971234567 -> true
+84 971234567 -> true
+840971234567 -> true
+84971234567 -> true
084971234567 -> true
84971234567 -> true

Subscribe
Notify of
guest

3 Comments
Newest
Oldest Most Voted
Inline Feedbacks
View all comments
mouad
mouad
1 year ago

911 but that’s a number you use to register to a service 😀

ALP CAN MARANGOZ
ALP CAN MARANGOZ
2 years ago

thanks

omid
omid
Reply to  ALP CAN MARANGOZ
2 years ago

hey

3
0
Would love your thoughts, please comment.x
()
x