resul-tc
Version:
Türkiye Cumhuriyeti kimlik numarası (TC) doğrulama fonksiyonu. Geçerli olup olmadığını kontrol eder ve neden geçersiz olduğunu açıklar.
45 lines (37 loc) • 1.38 kB
JavaScript
// Türkiye Cumhuriyeti Kimlik Numarası doğrulama fonksiyonu (sade loglu)
// Kullanım: tc('12345678901') veya tc(12345678901)
// Dönüş: { valid: true/false, logs: ["..."] }
function tc(tcno) {
const logs = [];
tcno = String(tcno);
// 11 haneli mi ve sadece rakam mı?
if (!/^\d{11}$/.test(tcno)) {
logs.push('TC kimlik numarası 11 haneli olmalı ve sadece rakamlardan oluşmalı.');
return { valid: false, logs };
}
// İlk hane 0 olamaz
if (tcno[0] === '0') {
logs.push('İlk hane 0 olamaz.');
return { valid: false, logs };
}
// Rakamları diziye çevir
const digits = tcno.split('').map(Number);
// 10. hanenin kontrolü
const sumOdd = digits[0] + digits[2] + digits[4] + digits[6] + digits[8];
const sumEven = digits[1] + digits[3] + digits[5] + digits[7];
const digit10 = ((sumOdd * 7) - sumEven) % 10;
if (digit10 !== digits[9]) {
logs.push('10. hane kuralı sağlanmıyor.');
return { valid: false, logs };
}
// 11. hanenin kontrolü
const sumAll = digits.slice(0, 10).reduce((a, b) => a + b, 0);
if (sumAll % 10 !== digits[10]) {
logs.push('11. hane kuralı sağlanmıyor.');
return { valid: false, logs };
}
logs.push('TC kimlik numarası geçerli.');
return { valid: true, logs };
}
// Dışa aktar (CommonJS)
module.exports = tc;