verifyIranianNationalId function

bool verifyIranianNationalId(
  1. String value
)

Checks the given String is an iranian national ID or not

Implementation

bool verifyIranianNationalId(String value) {
  if (!RegExp(isNumberRegExp).hasMatch(value)) return false;

  final nationalId = '0000$value'.substring(value.length + 4 - 10);

  if ((int.tryParse(nationalId.substring(3, 9)) ?? 0) == 0) return false;

  final lastNumber = int.parse(nationalId.substring(9, 10));

  var sum = 0;
  for (var i = 0; i < 9; i++) {
    sum += int.parse(nationalId.substring(i, i + 1)) * (10 - i);
  }

  sum = sum % 11;

  return (sum < 2 && lastNumber == sum) || (sum >= 2 && lastNumber == 11 - sum);
}