ولیدیشن برای کد ملی:
if (!/^\d{10}$/.test(value)) {
return false;
}
const digits = value.split("").map(Number);
let sum = 0;
for (let i = 0; i < 9; i++) {
sum += digits[i] * (10 - i);
}
const remainder = sum % 11;
if (
(remainder < 2 && digits[9] === remainder) ||
(remainder >= 2 && digits[9] === 11 - remainder)
) {
return true;
} else {
return false;
}
ساختار کد به این صورته:
به هر کدوم از 9 رقم اول کد ملی (از چپ به راست) ضرایب خاصی اختصاص میدیم
رقم اول در 10
رقم دوم در 9
رقم سوم در 8
و به همین ترتیب، رقم نهم در 2
بعدش این اعداد رو با هم جمع میکنیم.
حاصل جمع بهدست اومده رو بر 11 تقسیم میکنیم و باقیمانده رو به دست میاریم
اگر باقیمانده کمتر از 2 باشه عدد باقیمانده باید دقیقا برابر با رقم دهم (آخرین رقم کد ملی) باشه
اگر باقیمانده 2 یا بیشتر باشه باید 11 منهای باقیمانده برابر با رقم دهم باشه
اگر یکی از دو شرط بالا برقرار بود کد ملی معتبره در غیر این صورت،کد ملی نامعتبره
نویسنده :
عماد