validate-curp
Version:
A simple library to validate Mexican CURPs (Personal ID)
54 lines (51 loc) • 703 B
JavaScript
const VALUES_MAP = {
0: 0,
1: 1,
2: 2,
3: 3,
4: 4,
5: 5,
6: 6,
7: 7,
8: 8,
9: 9,
A: 10,
B: 11,
C: 12,
D: 13,
E: 14,
F: 15,
G: 16,
H: 17,
I: 18,
J: 19,
K: 20,
L: 21,
M: 22,
N: 23,
Ñ: 24,
O: 25,
P: 26,
Q: 27,
R: 28,
S: 29,
T: 30,
U: 31,
V: 32,
W: 33,
X: 34,
Y: 35,
Z: 36,
};
const getScore = (string) => string.split('').reduce((sum, char, i) => {
const index = 18 - i;
const value = VALUES_MAP[char] || 0;
return sum + value * index;
}, 0);
module.exports = (curp) => {
const base = curp.slice(0, -1);
const score = getScore(base);
const mod = score % 10;
if (mod === 0) return '0';
return String(10 - mod);
};