Node.js通过身份证号验证年龄、出生日期与性别方法示例
前言
大家如果想要知道自己的年龄,出生日期和性别,或者是别人的,给我个身份证号,我就可以知道,其实很简单的,看下面代码。
node.js实现
staticvalidateIdNumberToAgeYear(str){
letdate=newDate();
letcurrentYear=date.getFullYear();
letcurrentMonth=date.getMonth()+1;
letcurrentDate=date.getDate();
letidxSexStart=str.length==18?16:14;
letbirthYearSpan=str.length==18?4:2;
letyear;
letmonth;
letday;
letsex;
letbirthday;
letage;
//性别
letidxSex=1-str.substr(idxSexStart,1)%2;
sex=idxSex=='1'?'女':'男';
//生日
year=(birthYearSpan==2?'19':'')+str.substr(6,birthYearSpan);
month=str.substr(6+birthYearSpan,2);
day=str.substr(8+birthYearSpan,2);
birthday=year+'-'+month+'-'+day;
//年龄
letmonthFloor=(currentMonth=18){
returntrue;
}
returnfalse;
}
我这里只是做了一个年龄的判断。
利用js也可以实现
1.自定义js类如下:
//构造函数,变量为15位或者18位的身份证号码
functionclsIDCard(CardNo){
this.Valid=false;
this.ID15='';
this.ID18='';
this.Local='';
if(CardNo!=null)
this.SetCardNo(CardNo);
}
//设置身份证号码,15位或者18位
clsIDCard.prototype.SetCardNo=function(CardNo){
this.ID15='';
this.ID18='';
this.Local='';
CardNo=CardNo.replace("","");
varstrCardNo;
if(CardNo.length==18){
pattern=/^\d{17}(\d|x|X)$/;
if(pattern.exec(CardNo)==null)
return;
strCardNo=CardNo.toUpperCase();
}else{
pattern=/^\d{15}$/;
if(pattern.exec(CardNo)==null)
return;
strCardNo=CardNo.substr(0,6)+'19'+CardNo.substr(6,9)
strCardNo+=this.GetVCode(strCardNo);
}
this.Valid=this.CheckValid(strCardNo);
}
//校验身份证有效性
clsIDCard.prototype.IsValid=function(){
returnthis.Valid;
}
//返回生日字符串,格式如下,1981-10-10
clsIDCard.prototype.GetBirthDate=function(){
varBirthDate='';
if(this.Valid)
BirthDate=this.GetBirthYear()+'-'+this.GetBirthMonth()+'-'
+this.GetBirthDay();
returnBirthDate;
}
//返回生日中的年,格式如下,1981
clsIDCard.prototype.GetBirthYear=function(){
varBirthYear='';
if(this.Valid)
BirthYear=this.ID18.substr(6,4);
returnBirthYear;
}
//返回生日中的月,格式如下,10
clsIDCard.prototype.GetBirthMonth=function(){
varBirthMonth='';
if(this.Valid)
BirthMonth=this.ID18.substr(10,2);
if(BirthMonth.charAt(0)=='0')
BirthMonth=BirthMonth.charAt(1);
returnBirthMonth;
}
//返回生日中的日,格式如下,10
clsIDCard.prototype.GetBirthDay=function(){
varBirthDay='';
if(this.Valid)
BirthDay=this.ID18.substr(12,2);
returnBirthDay;
}
//返回性别,1:男,0:女
clsIDCard.prototype.GetSex=function(){
varSex='';
if(this.Valid)
Sex=this.ID18.charAt(16)%2;
returnSex;
}
//返回15位身份证号码
clsIDCard.prototype.Get15=function(){
varID15='';
if(this.Valid)
ID15=this.ID15;
returnID15;
}
//返回18位身份证号码
clsIDCard.prototype.Get18=function(){
varID18='';
if(this.Valid)
ID18=this.ID18;
returnID18;
}
//返回所在省,例如:上海市、浙江省
clsIDCard.prototype.GetLocal=function(){
varLocal='';
if(this.Valid)
Local=this.Local;
returnLocal;
}
clsIDCard.prototype.GetVCode=function(CardNo17){
varWi=newArray(7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2,1);
varAi=newArray('1','0','X','9','8','7','6','5','4','3','2');
varcardNoSum=0;
for(vari=0;i
2.页面只需要new出对象,并传递数据验证,并可获得相关数据(住址|出生日期|性别)即可:
$("#cardNo").blur(function(event){
varidCard=$(this).val();
varcheckFlag=newclsIDCard(idCard);
if(!checkFlag.IsValid()){
alert("身份证错误");
returnfalse;
}else{
alert("出生于:"+checkFlag.GetBirthDate()+"地区:"+checkFlag.GetLocal()+"sex:"+checkFlag.GetSex());
}
});
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对毛票票的支持。