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;i2.页面只需要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()); } });总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对毛票票的支持。