ตัวอย่างรหัสประชาชน
1-2015-41462-23-4 Check Digit ของรหัสประชาชนนี้คือเลข 4 (เลขตัวสุดท้าย)
ขั้นตอนที่ 1 เอาเลข 12 หลักมา เขียนแยกหลักกันก่อน (หลักที่ 13 ไม่ต้องเอามา) จะได้ 120154146223
ขั้นตอนที่ 2 เอาเลข 12 หลักนั้นมา คูณเข้ากับเลขประจำหลักของมัน
รหัสบัตร 1 2 0 1 5 4 1 4 6 2 2 3 ตัวคูณ 13 12 11 10 9 8 7 6 5 4 3 2
จะได้ 1*13+2*12+0*11+1*10+5*9+4*8+1*7+4*6+6*5+2*4+2*3+3*2
ผลคูณ 13+24+0+10+45+32+7+24+30+8+6+6
ขั้นตอนที่ 3 เอาผลคูณทั้ง 12 ตัวมา บวกกันทั้งหมด จะได้ 13+24+0+10+45+32+7+24+30+8+6+6=205
ขั้นตอนที่ 4 เอาเลขที่ได้จากขั้นตอนที่ 3 มา mod 11 (หารเอาเศษ) จะได้ 205 mod 11 = 7
ขั้นตอนที่ 5 เอา 11 ตั้ง ลบออกด้วย เลขที่ได้จากขั้นตอนที่ 4 จะได้ 11-7 = 4 (จะได้ 4 เป็นเลขในหลัก Check Digit)
ถ้าเกิด ลบแล้วได้ออกมาเป็นเลข 2 หลัก ให้เอาเลขในหลักหน่วยมาเป็น Check Digit (เช่น 11 ให้เอา 1 มา, 10 ให้เอา 0 มา เป็นต้น)
[code]function checkDigilCardID {
const pattern = /[0-9]{13}/;
if (!id.match(pattern)) { return false; }
let sum = 0;
for (let i = 0; i < 12; i += 1) {
sum += parseInt(id.substr(i, 1), 10) * ((13) - i);
}
if ((11 - (sum % 11)) % 10 !== parseInt(id.substr(12, 1), 10)) { return false; }
return true;
}[/code]
สุ่มเลขบัตรประชาชน 13 หลัก
[code lang="javascript"]function getNum() {
var r = rand(1, 8),
t = rand(0, 9),
e = rand(0, 9),
n = rand(0, 9),
a = rand(0, 9),
c = rand(0, 9),
i = rand(0, 9),
u = rand(0, 9),
l = rand(0, 9),
s = rand(0, 9),
o = rand(0, 9),
d = rand(0, 9),
g = getLastNum(r, t, e, n, a, c, i, u, l, s, o, d);
return '' + r + t + e + n + a + c + i + u + l + s + o + d + g;
}
function getLastNum() {
var r = arguments,
t = 13 * r[0] + 12 * r[1] + 11 * r[2] + 10 * r[3] + 9 * r[4] + 8 * r[5] + 7 * r[6] + 6 * r[7] + 5 * r[8] + 4 * r[9] + 3 * r[10] + 2 * r[11],
e = 11 - t % 11;
return e > 9 && (e %= 10), e;
}[/code]