31 lines
772 B
JavaScript
31 lines
772 B
JavaScript
function validateNationalCode(code) {
|
|
const invalidCodes = [
|
|
"1111111111",
|
|
"2222222222",
|
|
"3333333333",
|
|
"4444444444",
|
|
"5555555555",
|
|
"6666666666",
|
|
"7777777777",
|
|
"8888888888",
|
|
"9999999999",
|
|
];
|
|
if (invalidCodes.includes(code)) return false;
|
|
|
|
const L = code.length;
|
|
if (L < 8 || parseInt(code, 10) === 0) return false;
|
|
|
|
code = code.padStart(10, "0");
|
|
if (parseInt(code.substr(3, 6), 10) === 0) return false;
|
|
|
|
const c = parseInt(code.charAt(9), 10);
|
|
let s = 0;
|
|
for (let i = 0; i < 9; i++) {
|
|
s += parseInt(code.charAt(i), 10) * (10 - i);
|
|
}
|
|
s = s % 11;
|
|
return (s < 2 && c === s) || (s >= 2 && c === 11 - s);
|
|
}
|
|
|
|
export default validateNationalCode;
|