UNPKG

@annunx/validators

Version:

根据一定的规则对数据数据进行校验

2 lines (1 loc) 4.39 kB
"use strict";const t=[{company:"中国电信",no:["1700","1701","1702","162"]},{company:"中国移动",no:["1703","1705","1706","165"]},{company:"中国联通",no:["1704","1707","1708","1709","171","167"]}],e=[{company:"中国移动",no:["134","135","136","137","138","139","147","150","151","152","157","158","159","178","182","183","184","187","188","198"]},{company:"中国电信",no:["133","153","173","177","180","181","189","191","199"]},{company:"中国联通",no:["130","131","132","155","156","166","175","176","185","186"]},{company:"中国广电",no:["192"]}];var s={validateNumber:(t,e=!1)=>{if("string"!=typeof t&&"number"!=typeof t)return{state:!1,msg:"输入必须是字符串或数字"};const s={state:/^-?\d+(\.\d+)?([eE][-+]?\d+)?$/.test(String(t)),msg:""};return s.state||(s.msg="不是一个有效的数字"),e?s:s.state},validateEmail:(t,e=!1)=>{if("string"!=typeof t)return{state:!1,msg:"输入必须是字符串"};const s={state:/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/.test(t),msg:""};return s.state||(s.msg="不是一个有效的电子邮件地址"),e?s:s.state},validateMobile:function(s,n=!1,r=!1){const a={state:!1,msg:""};if(!s)return a.msg="手机号码为空",!!n&&a;if(11!==(s=s.trim()).length)return a.msg="手机号码长度不符合!",!!n&&a;if(!/^[0-9]*$/.test(s))return a.msg="手机号码必须为数字!",!!n&&a;const g=[];return e.forEach((t=>{for(let e=0;e<t.no.length;e++)g.push(t.no[e])})),r&&t.forEach((t=>{for(let e=0;e<t.no.length;e++)g.push(t.no[e])})),g.includes(s.substring(0,3))||g.includes(s.substring(0,4))?(a.state=!0,a.msg="",!n||a):(a.msg="当前号段暂不支持!",!!n&&a)},validateIdCard:(t,e=!1)=>{const s={state:!0,msg:""};if("string"!=typeof t)return s.state=!1,s.msg="必须输入内容",e?s:s.state;if(18!==(t=t.trim()).length)return s.state=!1,s.msg="身份证号长度不符合规定!",e?s:s.state;t=t.toUpperCase();if(!new RegExp(/^\d{17}([0-9]|X)$/).test(t))return s.state=!1,s.msg="身份证号长度不正确或不符合规定!",s;if(null==={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:"国外"}[parseInt(t.substring(0,2))])return s.state=!1,s.msg="身份证号不是中国大陆证件号码!",e?s:s.state;const n=(t=>18!==t.length?"无效的身份证号码":`${t.substring(6,10)}-${t.substring(10,12)}-${t.substring(12,14)}`)(t);if(console.log(new Date(n).getTime(),(new Date).getTime()),new Date(n).getTime()>(new Date).getTime())return s.state=!1,s.msg="身份证号出生日期不正确!",e?s:s.state;const r=[7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2];let a=0;for(let e=0;e<t.length-1;e++)a+=parseInt(t.substring(e,e+1),10)*r[e];return[1,0,"X",9,8,7,6,5,4,3,2][a%11].toString()!==t.substring(17,18).toUpperCase()?(s.state=!1,s.msg="身份证号不正确或不符合规定!",e?s:s.state):e?s:s.state},validateChinaOrganizationCode:(t,e=!1)=>{const s={state:!0,msg:""};if(!t)return s.state=!1,!!e&&s;if("string"!=typeof t)return s.state=!1,s.msg="输入必须是字符串",!!e&&s;const n=t.trim();if(18===n.length){if(!["1","2","3","4","5","6","7","8","9","A","N","Y"].includes(n[0]))return s.state=!1,s.msg="登记管理部门代码不正确",!!e&&s;if(!["1","2","3","9","4","5"].includes(n[1]))return s.state=!1,s.msg="机构类别代码不正确",!!e&&s;const t=(t=>{const e="0123456789ABCDEFGHJKLMNPQRTUWXY".split(""),s=[1,3,9,27,19,26,16,17,20,29,25,13,8,24,10,30,28];let n=0;for(let r=0;r<17;r++)n+=e.indexOf(t[r]+"")*s[r];return e[(31-n%31)%e.length]===t.split("").pop()})(n);return t?(s.state=!0,!e||s):(s.state=!1,s.msg="校验码不正确",!!e&&s)}if(15===n.length){const t=(t=>{var e=[],s=[],n=[],r=10;s[0]=r;for(let a=0;a<t.length;a++)n[a]=parseInt(t.substring(a,a+1),r),e[a]=s[a]%11+n[a],0==e[a]%r?s[a+1]=20:s[a+1]=e[a]%r*2;return 1==e[14]%r})(n);return t?(s.state=!0,!e||s):(s.state=!1,s.msg="校验码不正确",!!e&&s)}return s.state=!1,s.msg="输入必须是15位或18位字符",!!e&&s}};module.exports=s;