util-helpers
Version:
34 lines (31 loc) • 1.01 kB
JavaScript
import { toString } from 'ut2';
var regIdCard = /^[1-9]\d{5}(19|20)?\d{2}((0[1-9])|(1[012]))(([0-2][1-9])|10|20|30|31)\d{3}(\d|X)?$/i;
function check(id) {
var index, sum;
for (sum = index = 0; index < 17; index++) {
sum += (Math.pow(2, 17 - index) % 11) * Number(id[index]);
}
var num = (12 - (sum % 11)) % 11;
if (num < 10) {
return num === Number(id[17]);
}
else {
return id[17].toUpperCase() === 'X';
}
}
function isIdCard(value, options) {
if (options === void 0) { options = {}; }
var _a = options.loose, loose = _a === void 0 ? false : _a, _b = options.checkCode, checkCode = _b === void 0 ? true : _b;
var valueStr = toString(value);
if (valueStr.length === 15 && loose) {
return regIdCard.test(valueStr);
}
if (valueStr.length === 18 && regIdCard.test(valueStr)) {
if (checkCode) {
return check(valueStr);
}
return true;
}
return false;
}
export { isIdCard as default };