UNPKG

cn-idno-validator

Version:
2 lines (1 loc) 971 B
function r(r){if(!function(r){return!(!r||"string"!=typeof r)&&18===r.length}(r))return!1;var e=function(r){var e=r.slice(0,17),n=r.slice(0,6),t=r.slice(6,14),u=e.slice(-3);return{masterNumber:e,addrNumber:n,birthNumber:t,orderNumber:u,checkNumber:r.slice(-1).toUpperCase()}}(r),n=e.birthNumber,t=e.addrNumber,u=e.masterNumber,i=e.checkNumber;return!!function(r){if(8!==r.length)return!1;if(parseInt(r.slice(0,4),10)<1850)return!1;var e=parseInt(r.slice(4,6),10),n=parseInt(r.slice(-2),10);return!(e>12||0===e||n>31||0===n)}(n)&&(!!function(r){var e=r.slice(0,2);return["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"].includes(e)}(t)&&function(r){var e=r.split("");return["1","0","X","9","8","7","6","5","4","3","2"][[7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2].reduce((function(r,n,t){return r+parseInt(e[t],10)*n}),0)%11]}(u)===i)}export{r as isValid};