张家口网站建设费用,如何注册网站免费注册,深圳营销型定制网站开发1000,记事本简单好玩的编程代码在做项目过程中针对自然人数据提交到后端前一般是要进行身份证的合法性校验#xff0c;当身份证号输入错误以便给于用户友好的提示(也可以根据身份证号同时校验表单中性别和出生日期等)#xff0c;验证主要是防止无效数据入库。本文在前端使用JavaScript实现15/18位身份证的合…在做项目过程中针对自然人数据提交到后端前一般是要进行身份证的合法性校验当身份证号输入错误以便给于用户友好的提示(也可以根据身份证号同时校验表单中性别和出生日期等)验证主要是防止无效数据入库。本文在前端使用JavaScript实现15/18位身份证的合法性校验。
JavaScript前端代码
/*** 身份证15位编码规则dddddd yymmdd xx p dddddd6位地区编码 yymmdd: 出生年(两位年)月日如910215 xx:* 顺序编码系统产生无法确定 p: 性别奇数为男偶数为女* * 身份证18位编码规则dddddd yyyymmdd xxx y dddddd6位地区编码 yyyymmdd:* 出生年(四位年)月日如19910215 xxx顺序编码系统产生无法确定奇数为男偶数为女 y: 校验码该位数值可通过前17位计算获得* * 前17位号码加权因子为 Wi [ 7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2 ] 验证位* Y [ 1, 0, 10, 9, 8, 7, 6, 5, 4, 3, 2 ] 如果验证码恰好是10为了保证身份证是十八位那么第十八位将用X来代替* 校验位计算公式Y_P mod( ∑(Ai×Wi),11 ) i为身份证号码1...17 位; Y_P为校验码Y所在校验码数组位置*/
function isIdCard(idCard) {// 15位和18位身份证号码的正则表达式var regIdCard /^(^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$)|(^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])((\d{4})|\d{3}[Xx])$)$/;// 如果通过该验证说明身份证格式正确但准确性还需计算if (regIdCard.test(idCard)) {if (idCard.length 18) {var idCardWi new Array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10,5, 8, 4, 2); // 将前17位加权因子保存在数组里var idCardY new Array(1, 0, 10, 9, 8, 7, 6, 5, 4, 3, 2); // 这是除以11后可能产生的11位余数、验证码也保存成数组var idCardWiSum 0; // 用来保存前17位各自乖以加权因子后的总和for (var i 0; i 17; i) {idCardWiSum idCard.substring(i, i 1) * idCardWi[i];}var idCardMod idCardWiSum % 11;// 计算出校验码所在数组的位置var idCardLast idCard.substring(17);// 得到最后一位身份证号码// 如果等于2则说明校验码是10身份证号码最后一位应该是Xif (idCardMod 2) {if (idCardLast X || idCardLast x) {//alert(恭喜通过验证啦);return true;} else {//alert(身份证号码错误);return false;}} else {// 用计算出的验证码与最后一位身份证号码匹配如果一致说明通过否则是无效的身份证号码if (idCardLast idCardY[idCardMod]) {//alert(恭喜通过验证啦);return true;} else {//alert(身份证号码错误);return false;}}}else{return true;}} else {//alert(身份证格式不正确!);return false;}
}