verifyNationalId static method

bool verifyNationalId(
  1. String id
)

Validates Iranian national ID @param id The national ID to validate @returns bool True if valid Example: PersianTools.verifyNationalId("1234567890") => false

Implementation

static bool verifyNationalId(String id) {
  if (!RegExp(r"^\d{10}$").hasMatch(id)) return false;
  final String paddedId = "0000$id".substring(id.length);
  if (int.parse(paddedId.substring(3, 9)) == 0) return false;
  final int lastDigit = int.parse(paddedId[9]);
  final int sum = List<int>.generate(9, (int i) => int.parse(paddedId[i]) * (10 - i)).reduce((int a, int b) => a + b) % 11;
  return (sum < 2 && lastDigit == sum) || (sum >= 2 && lastDigit == 11 - sum);
}