validateNationalCode static method
Validates Iranian national ID @param id The national ID to validate @returns bool True if valid Example: PersianTools.verifyNationalId("1234567890") => false
Implementation
static bool validateNationalCode(String? input) {
if (input == null) return false;
final String code = input.trim();
if (code.length != 10 || RegExp("[^0-9]").hasMatch(code)) return false;
if (RegExp(r"^(\d)\1{9}$").hasMatch(code)) return false;
final List<int> digits = code.split("").map(int.parse).toList();
int sum = 0;
for (int i = 0; i < 9; i++) {
sum += digits[i] * (10 - i);
}
final int remainder = sum % 11;
final int expected = remainder < 2 ? remainder : 11 - remainder;
return expected == digits[9];
}