Cleanup
This commit is contained in:
225
node_modules/validator/es/lib/isIdentityCard.js
generated
vendored
225
node_modules/validator/es/lib/isIdentityCard.js
generated
vendored
@@ -1,5 +1,39 @@
|
||||
import assertString from './util/assertString';
|
||||
import isInt from './isInt';
|
||||
var validators = {
|
||||
PL: function PL(str) {
|
||||
assertString(str);
|
||||
var weightOfDigits = {
|
||||
1: 1,
|
||||
2: 3,
|
||||
3: 7,
|
||||
4: 9,
|
||||
5: 1,
|
||||
6: 3,
|
||||
7: 7,
|
||||
8: 9,
|
||||
9: 1,
|
||||
10: 3,
|
||||
11: 0
|
||||
};
|
||||
|
||||
if (str != null && str.length === 11 && isInt(str, {
|
||||
allow_leading_zeroes: true
|
||||
})) {
|
||||
var digits = str.split('').slice(0, -1);
|
||||
var sum = digits.reduce(function (acc, digit, index) {
|
||||
return acc + Number(digit) * weightOfDigits[index + 1];
|
||||
}, 0);
|
||||
var modulo = sum % 10;
|
||||
var lastDigit = Number(str.charAt(str.length - 1));
|
||||
|
||||
if (modulo === 0 && lastDigit === 0 || lastDigit === 10 - modulo) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
},
|
||||
ES: function ES(str) {
|
||||
assertString(str);
|
||||
var DNI = /^[0-9X-Z][0-9]{7}[TRWAGMYFPDXBNJZSQVHLCKE]$/;
|
||||
@@ -22,6 +56,24 @@ var validators = {
|
||||
});
|
||||
return sanitized.endsWith(controlDigits[number % 23]);
|
||||
},
|
||||
FI: function FI(str) {
|
||||
// https://dvv.fi/en/personal-identity-code#:~:text=control%20character%20for%20a-,personal,-identity%20code%20calculated
|
||||
assertString(str);
|
||||
|
||||
if (str.length !== 11) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!str.match(/^\d{6}[\-A\+]\d{3}[0-9ABCDEFHJKLMNPRSTUVWXY]{1}$/)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
var checkDigits = '0123456789ABCDEFHJKLMNPRSTUVWXY';
|
||||
var idAsNumber = parseInt(str.slice(0, 6), 10) * 1000 + parseInt(str.slice(7, 10), 10);
|
||||
var remainder = idAsNumber % 31;
|
||||
var checkDigit = checkDigits[remainder];
|
||||
return checkDigit === str.slice(10, 11);
|
||||
},
|
||||
IN: function IN(str) {
|
||||
var DNI = /^[1-9]\d{3}\s?\d{4}\s?\d{4}$/; // multiplication table
|
||||
|
||||
@@ -42,6 +94,26 @@ var validators = {
|
||||
});
|
||||
return c === 0;
|
||||
},
|
||||
IR: function IR(str) {
|
||||
if (!str.match(/^\d{10}$/)) return false;
|
||||
str = "0000".concat(str).slice(str.length - 6);
|
||||
if (parseInt(str.slice(3, 9), 10) === 0) return false;
|
||||
var lastNumber = parseInt(str.slice(9, 10), 10);
|
||||
var sum = 0;
|
||||
|
||||
for (var i = 0; i < 9; i++) {
|
||||
sum += parseInt(str.slice(i, i + 1), 10) * (10 - i);
|
||||
}
|
||||
|
||||
sum %= 11;
|
||||
return sum < 2 && lastNumber === sum || sum >= 2 && lastNumber === 11 - sum;
|
||||
},
|
||||
IT: function IT(str) {
|
||||
if (str.length !== 9) return false;
|
||||
if (str === 'CA00000AA') return false; // https://it.wikipedia.org/wiki/Carta_d%27identit%C3%A0_elettronica_italiana
|
||||
|
||||
return str.search(/C[A-Z][0-9]{5}[A-Z]{2}/i) > -1;
|
||||
},
|
||||
NO: function NO(str) {
|
||||
var sanitized = str.trim();
|
||||
if (isNaN(Number(sanitized))) return false;
|
||||
@@ -51,14 +123,26 @@ var validators = {
|
||||
var f = sanitized.split('').map(Number);
|
||||
var k1 = (11 - (3 * f[0] + 7 * f[1] + 6 * f[2] + 1 * f[3] + 8 * f[4] + 9 * f[5] + 4 * f[6] + 5 * f[7] + 2 * f[8]) % 11) % 11;
|
||||
var k2 = (11 - (5 * f[0] + 4 * f[1] + 3 * f[2] + 2 * f[3] + 7 * f[4] + 6 * f[5] + 5 * f[6] + 4 * f[7] + 3 * f[8] + 2 * k1) % 11) % 11;
|
||||
|
||||
if (k1 === 11) {
|
||||
k1 = 0;
|
||||
}
|
||||
|
||||
if (k1 !== f[9] || k2 !== f[10]) return false;
|
||||
return true;
|
||||
},
|
||||
TH: function TH(str) {
|
||||
if (!str.match(/^[1-8]\d{12}$/)) return false; // validate check digit
|
||||
|
||||
var sum = 0;
|
||||
|
||||
for (var i = 0; i < 12; i++) {
|
||||
sum += parseInt(str[i], 10) * (13 - i);
|
||||
}
|
||||
|
||||
return str[12] === ((11 - sum % 11) % 10).toString();
|
||||
},
|
||||
LK: function LK(str) {
|
||||
var old_nic = /^[1-9]\d{8}[vx]$/i;
|
||||
var new_nic = /^[1-9]\d{11}$/i;
|
||||
if (str.length === 10 && old_nic.test(str)) return true;else if (str.length === 12 && new_nic.test(str)) return true;
|
||||
return false;
|
||||
},
|
||||
'he-IL': function heIL(str) {
|
||||
var DNI = /^\d{9}$/; // sanitize user input
|
||||
|
||||
@@ -80,6 +164,18 @@ var validators = {
|
||||
|
||||
return sum % 10 === 0;
|
||||
},
|
||||
'ar-LY': function arLY(str) {
|
||||
// Libya National Identity Number NIN is 12 digits, the first digit is either 1 or 2
|
||||
var NIN = /^(1|2)\d{11}$/; // sanitize user input
|
||||
|
||||
var sanitized = str.trim(); // validate the data structure
|
||||
|
||||
if (!NIN.test(sanitized)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
},
|
||||
'ar-TN': function arTN(str) {
|
||||
var DNI = /^\d{8}$/; // sanitize user input
|
||||
|
||||
@@ -92,56 +188,50 @@ var validators = {
|
||||
return true;
|
||||
},
|
||||
'zh-CN': function zhCN(str) {
|
||||
var provinceAndCitys = {
|
||||
11: '北京',
|
||||
12: '天津',
|
||||
13: '河北',
|
||||
14: '山西',
|
||||
15: '内蒙古',
|
||||
21: '辽宁',
|
||||
22: '吉林',
|
||||
23: '黑龙江',
|
||||
31: '上海',
|
||||
32: '江苏',
|
||||
33: '浙江',
|
||||
34: '安徽',
|
||||
35: '福建',
|
||||
36: '江西',
|
||||
37: '山东',
|
||||
41: '河南',
|
||||
42: '湖北',
|
||||
43: '湖南',
|
||||
44: '广东',
|
||||
45: '广西',
|
||||
46: '海南',
|
||||
50: '重庆',
|
||||
51: '四川',
|
||||
52: '贵州',
|
||||
53: '云南',
|
||||
54: '西藏',
|
||||
61: '陕西',
|
||||
62: '甘肃',
|
||||
63: '青海',
|
||||
64: '宁夏',
|
||||
65: '新疆',
|
||||
71: '台湾',
|
||||
81: '香港',
|
||||
82: '澳门',
|
||||
91: '国外'
|
||||
};
|
||||
var provincesAndCities = ['11', // 北京
|
||||
'12', // 天津
|
||||
'13', // 河北
|
||||
'14', // 山西
|
||||
'15', // 内蒙古
|
||||
'21', // 辽宁
|
||||
'22', // 吉林
|
||||
'23', // 黑龙江
|
||||
'31', // 上海
|
||||
'32', // 江苏
|
||||
'33', // 浙江
|
||||
'34', // 安徽
|
||||
'35', // 福建
|
||||
'36', // 江西
|
||||
'37', // 山东
|
||||
'41', // 河南
|
||||
'42', // 湖北
|
||||
'43', // 湖南
|
||||
'44', // 广东
|
||||
'45', // 广西
|
||||
'46', // 海南
|
||||
'50', // 重庆
|
||||
'51', // 四川
|
||||
'52', // 贵州
|
||||
'53', // 云南
|
||||
'54', // 西藏
|
||||
'61', // 陕西
|
||||
'62', // 甘肃
|
||||
'63', // 青海
|
||||
'64', // 宁夏
|
||||
'65', // 新疆
|
||||
'71', // 台湾
|
||||
'81', // 香港
|
||||
'82', // 澳门
|
||||
'91' // 国外
|
||||
];
|
||||
var powers = ['7', '9', '10', '5', '8', '4', '2', '1', '6', '3', '7', '9', '10', '5', '8', '4', '2'];
|
||||
var parityBit = ['1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2'];
|
||||
|
||||
var checkAddressCode = function checkAddressCode(addressCode) {
|
||||
var check = /^[1-9]\d{5}$/.test(addressCode);
|
||||
if (!check) return false; // eslint-disable-next-line radix
|
||||
|
||||
return !!provinceAndCitys[Number.parseInt(addressCode.substring(0, 2))];
|
||||
return provincesAndCities.includes(addressCode);
|
||||
};
|
||||
|
||||
var checkBirthDayCode = function checkBirthDayCode(birDayCode) {
|
||||
var check = /^[1-9]\d{3}((0[1-9])|(1[0-2]))((0[1-9])|([1-2][0-9])|(3[0-1]))$/.test(birDayCode);
|
||||
if (!check) return false;
|
||||
var yyyy = parseInt(birDayCode.substring(0, 4), 10);
|
||||
var mm = parseInt(birDayCode.substring(4, 6), 10);
|
||||
var dd = parseInt(birDayCode.substring(6), 10);
|
||||
@@ -161,8 +251,7 @@ var validators = {
|
||||
var power = 0;
|
||||
|
||||
for (var i = 0; i < 17; i++) {
|
||||
// eslint-disable-next-line radix
|
||||
power += parseInt(id17.charAt(i), 10) * Number.parseInt(powers[i]);
|
||||
power += parseInt(id17.charAt(i), 10) * parseInt(powers[i], 10);
|
||||
}
|
||||
|
||||
var mod = power % 11;
|
||||
@@ -176,19 +265,19 @@ var validators = {
|
||||
var check15IdCardNo = function check15IdCardNo(idCardNo) {
|
||||
var check = /^[1-9]\d{7}((0[1-9])|(1[0-2]))((0[1-9])|([1-2][0-9])|(3[0-1]))\d{3}$/.test(idCardNo);
|
||||
if (!check) return false;
|
||||
var addressCode = idCardNo.substring(0, 6);
|
||||
var addressCode = idCardNo.substring(0, 2);
|
||||
check = checkAddressCode(addressCode);
|
||||
if (!check) return false;
|
||||
var birDayCode = "19".concat(idCardNo.substring(6, 12));
|
||||
check = checkBirthDayCode(birDayCode);
|
||||
if (!check) return false;
|
||||
return checkParityBit(idCardNo);
|
||||
return true;
|
||||
};
|
||||
|
||||
var check18IdCardNo = function check18IdCardNo(idCardNo) {
|
||||
var check = /^[1-9]\d{5}[1-9]\d{3}((0[1-9])|(1[0-2]))((0[1-9])|([1-2][0-9])|(3[0-1]))\d{3}(\d|x|X)$/.test(idCardNo);
|
||||
if (!check) return false;
|
||||
var addressCode = idCardNo.substring(0, 6);
|
||||
var addressCode = idCardNo.substring(0, 2);
|
||||
check = checkAddressCode(addressCode);
|
||||
if (!check) return false;
|
||||
var birDayCode = idCardNo.substring(6, 14);
|
||||
@@ -203,15 +292,39 @@ var validators = {
|
||||
|
||||
if (idCardNo.length === 15) {
|
||||
return check15IdCardNo(idCardNo);
|
||||
} else if (idCardNo.length === 18) {
|
||||
return check18IdCardNo(idCardNo);
|
||||
}
|
||||
|
||||
return false;
|
||||
return check18IdCardNo(idCardNo);
|
||||
};
|
||||
|
||||
return checkIdCardNo(str);
|
||||
},
|
||||
'zh-HK': function zhHK(str) {
|
||||
// sanitize user input
|
||||
str = str.trim(); // HKID number starts with 1 or 2 letters, followed by 6 digits,
|
||||
// then a checksum contained in square / round brackets or nothing
|
||||
|
||||
var regexHKID = /^[A-Z]{1,2}[0-9]{6}((\([0-9A]\))|(\[[0-9A]\])|([0-9A]))$/;
|
||||
var regexIsDigit = /^[0-9]$/; // convert the user input to all uppercase and apply regex
|
||||
|
||||
str = str.toUpperCase();
|
||||
if (!regexHKID.test(str)) return false;
|
||||
str = str.replace(/\[|\]|\(|\)/g, '');
|
||||
if (str.length === 8) str = "3".concat(str);
|
||||
var checkSumVal = 0;
|
||||
|
||||
for (var i = 0; i <= 7; i++) {
|
||||
var convertedChar = void 0;
|
||||
if (!regexIsDigit.test(str[i])) convertedChar = (str[i].charCodeAt(0) - 55) % 11;else convertedChar = str[i];
|
||||
checkSumVal += convertedChar * (9 - i);
|
||||
}
|
||||
|
||||
checkSumVal %= 11;
|
||||
var checkSumConverted;
|
||||
if (checkSumVal === 0) checkSumConverted = '0';else if (checkSumVal === 1) checkSumConverted = 'A';else checkSumConverted = String(11 - checkSumVal);
|
||||
if (checkSumConverted === str[str.length - 1]) return true;
|
||||
return false;
|
||||
},
|
||||
'zh-TW': function zhTW(str) {
|
||||
var ALPHABET_CODES = {
|
||||
A: 10,
|
||||
|
||||
Reference in New Issue
Block a user