isValid method

bool isValid(
  1. String? dlNumber
)

function to check if the provided dlNumber is valid or not.

returns true if the dlNumber seems to be valid.

This will validate the driving license numbers issued between 1900 to current year.

Implementation

bool isValid(String? dlNumber) {
  if (dlNumber == null) return false;

  // remove the space and hyphen (-) from [dlNumber]
  // because the driving license number can have these
  dlNumber = dlNumber.replaceAll(RegExp(r"-|\s+"), "");

  if (dlNumber.length != 15) {
    // driving license number length must be 15 without space or hyphen
    return false;
  }

  int minYear = 1900;
  int maxYear = DateTime.now().year;
  String minYearFirstTwoDigits = minYear.toString().substring(0, 2);
  String maxYearFirstTwoDigits = maxYear.toString().substring(0, 2);
  String yearRegEx =
      "($minYearFirstTwoDigits|$maxYearFirstTwoDigits)[0-9][0-9]";

  RegExp dlRegExp =
      RegExp(r"^([A-Za-z]{2}[0-9]{2})(" + yearRegEx + ")[0-9]{7}\$");
  if (dlRegExp.hasMatch(dlNumber)) {
    // regular expression matched
    // now check the issue year
    int year = int.parse(dlNumber.substring(4, 8));
    return year >= minYear && year <= maxYear;
  }

  return false;
}