微信小程序身份证验证方法实现详解
身份证验证在很多小程序中已经成为必不可少的一部分,它能有效的判断出身份证是否存在,是否输入错误,以防不良人士恶意攻击。
判断一个身份证是否合法的身份证号码有以下几个步骤需要验证
①:身份证18位数
②:前17位全是数字
③:验证最后一位
1.前面的身份证号码17位数分别乘以不同的系数 从第一位到第十七位的系数分别为:7-9-10-5-8-4-2-1-6-3-7-9-10-5-8-4-2。
2.将这17位数字和系数相乘的结果相加。
3.用加出来和模以11,看余数是多少?
4.余数只可能有0-1-2-3-4-5-6-7-8-9-10这11个数字。其分别对应的最后一位身份证的号码为1-0-X-9-8-7-6-5-4-3-2。
5.通过上面得知如果余数是3,就会在身份证的第18位数字上出现的是9。
6. 如果对应的数字是10,身份证的最后一位号码就是罗马数字x。
wxml
姓名: 身份证: 手机号: 和你的关系
js
//绑定输入的姓名 bininput_name:function(e){this.setData({name:e.detail.value})}, //绑定输入的身份证 bininput_identity:function(e){this.setData({identity:e.detail.value})}, //绑定输入的电话 bininput_mobile:function(e){this.setData({mobile:e.detail.value})},
js身份证验证方法
/*身份证验证输入是否正确 *身份证号合法性验证 *支持15位和18位身份证号*支持地址编码、出生日期、校验位验证*/ getBirthAndSex:function(e){ varts=this; varcode=this.data.identity//identity为你输入的身份证 console.log(code) varcity={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:"国外"}; vartip=""; varpass=true; varreg=/^\d{6}(18|19|20)?\d{2}(0[1-9]|1[012])(0[1-9]|[12]\d|3[01])\d{3}(\d|X)$/; if(!code||!code.match(reg)){ tip="身份证号格式错误"; pass=false; }elseif(!city[code.substr(0,2)]){ tip="地址编码错误";pass=false; }else{ //18位身份证需要验证最后一位校验位 if(code.length==18){code=code.split(''); //∑(ai×Wi)(mod11) //加权因子 varfactor=[7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2]; //校验位varparity=[1,0,'X',9,8,7,6,5,4,3,2]; varsum=0; varai=0; varwi=0; for(vari=0;i<17;i++){ ai=code[i]; wi=factor[i]; sum+=ai*wi; } varlast=parity[sum%11]; if(parity[sum%11]!=code[17]){ tip="校验位错误"; pass=false; } } } console.log("pass==="+pass) if(pass){ts.setData({allow_id:true});wx.setStorageSync("idcard",code)} if(!pass)console.log("tip"+tip); returnpass; }, ···
如果身份证输入正确,控制台输出的是ture,反之false。如果是错误的身份证号码,会提示那里错误。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。