validateNationalCode static method

bool validateNationalCode(
  1. String? input
)

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];
}