验证身份证号格式,笔记
1var that = this 2that.optional()是验证是否为空方法 3----------------- 4idcard(idCard) { 5 var regIdCard = that.optional(idCard) || /^[1-9]\d{5}(18|19|([23]\d))\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/.test(idCard) 6 //如果通过该验证,说明身份证格式正确,但准确性还需计算 7 if(regIdCard){ 8 if(idCard.length==18){ 9 var idCardWi=new Array( 7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2 ); //将前17位加权因子保存在数组里 10 var idCardY=new Array( 1, 0, 10, 9, 8, 7, 6, 5, 4, 3, 2 ); //这是除以11后,可能产生的11位余数、验证码,也保存成数组 11 var idCardWiSum=0; //用来保存前17位各自乖以加权因子后的总和 12 for(var i=0;i<17;i++){ 13 idCardWiSum+=idCard.substring(i,i+1)*idCardWi[i]; 14 } 15 var idCardMod=idCardWiSum%11;//计算出校验码所在数组的位置 16 var idCardLast=idCard.substring(17);//得到最后一位身份证号码 17 //如果等于2,则说明校验码是10,身份证号码最后一位应该是X 18 if(idCardMod==2){ 19 if(idCardLast=="X"||idCardLast=="x"){ 20 return true 21 }else{ 22 wx.showToast({ 23 title: '身份证号码错误!', 24 }) 25 return false 26 } 27 }else{ 28 //用计算出的验证码与最后一位身份证号码匹配,如果一致,说明通过,否则是无效的身份证号码 29 if(idCardLast==idCardY[idCardMod]){ 30 return true 31 }else{ 32 wx.showToast({ 33 title: '身份证号码错误!', 34 }) 35 return false 36 } 37 } 38 } 39 }else{ 40 wx.showToast({ 41 title: '身份证格式不正确', 42 }) 43 return false 44 } 45},
