isValid method
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;
}