ตัวอย่าง 1-2345-67890-12-1
- นำไปคูณเลขประจำตำแหน่ง : (1*13)+(2*12)+(3*11)+(4*10)+(5*9)+(6*8)+(7*7)+(8*6)+(9*5)+(0*4)+(1*3)+(2*2) = 352
- หารเอาเศษด้วย : 11 352%11= 0
- นำ 11 ตั้งแล้วลบเศษที่ได้จากการหารในข้อ 2 : 11 – 0 = 11 (เอาเลขหลักหน่วย) ดังนั้น Check Digit คือ 1
- จะได้ : 1-2345-67890-12-1
private static bool validateIDCard(string idcardno) { if (string.IsNullOrEmpty(idcardno)) { log.Info(string.Format("idcardno IsNullOrEmpty '{0}'", idcardno)); return false; } if (idcardno.Length != 13) { log.Info(string.Format("idcardno Length != 13 '{0}'", idcardno)); return false; } bool isDigit = Regex.IsMatch(idcardno, @"^[0-9]*$"); if (!isDigit) { log.Info(string.Format("idcardno is not only digit '{0}'", idcardno)); return false; } int sum = 0; for (int i = 0; i < 12; i++) { sum += Convert.ToInt32(idcardno.Substring(i, 1)) * (13 - i); } int checksum = (11 - (sum % 11)) % 10; if (checksum != Convert.ToInt32(idcardno.Substring(12))) { log.Info(string.Format("idcardno checksum error '{0}', sum = '{1}', checksum = '{2}'", idcardno, sum, checksum)); return false; } return true; }