UNPKG

istckimlik

Version:

A tool for validate Turkish Identification Number

36 lines (35 loc) 1.73 kB
"use strict"; /** * @Method: Checks Turkish Identification Number is true or false * @Param {number} * @Return {boolean} */ Object.defineProperty(exports, "__esModule", { value: true }); exports.isTCKimlik = void 0; function isTCKimlik(TurkishID) { // Convert to string for for loops etc. var StringifiedTurkishID = TurkishID.toString(); // Check For Start With Zero because Turkish Identification Number cant start with zero var checkIfStartWithZero = 0 !== Number(StringifiedTurkishID.substr(0, 1)); // Check For NumberCount of Turkish Identification Number. Count Must Be 11 var checkCountEvelen = /^[0-9]{11}$/.test(StringifiedTurkishID); var totalSum = 0; var totalPartialSum1 = 0; var totalPartialSum2 = 0; for (var i = 0; i < 10; i++) { totalSum += Number(StringifiedTurkishID.substr(i, 1)); } // Check if mod(10) gives 11th number of Turkish Identification Number var checkModTenForEleven = totalSum % 10 === Number(StringifiedTurkishID.substr(10, 1)); for (var i = 0; i < 10; i += 2) { totalPartialSum1 += Number(StringifiedTurkishID.substr(i, 1)); } for (var i = 1; i < 10; i += 2) { totalPartialSum2 += Number(StringifiedTurkishID.substr(i, 1)); } // Check if mod(10) of these two variables math gives 10th number of Turkish Identification Number var checkModTenForTen = (totalPartialSum1 * 7 - totalPartialSum2) % 10 === Number(StringifiedTurkishID.substr(9, 0)); // If everything is ok you will get an true for return. If there is a problem, script gives false for every error. return checkIfStartWithZero && checkCountEvelen && checkModTenForEleven && checkModTenForTen; } exports.isTCKimlik = isTCKimlik;