js --身份证号合法性校验
来源:互联网 发布:雕刻软件有哪些 编辑:程序博客网 时间:2024/05/16 05:53
js --身份证号合法性校验
//身份证号合法性校验function IdentityCodeValid(sfzh){ if(sfzh == ""){ mini.alert("输入身份证号码不能为空!"); return false; } //长度 if (sfzh.length != 15 && sfzh.length != 18) { mini.alert("身份证号码格式不正确(长度不是15或18位)!"); return false; } //地址编码 var area={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:"国外"}; if(area[parseInt(sfzh.substr(0,2))]==null) { mini.alert("身份证号码不正确(地区非法)!"); return false; } /* 15位身份证 校验 */ if (sfzh.length == 15){ pattern= /^\d{15}$/; if (pattern.exec(sfzh)==null){ mini.alert("15位身份证号码必须为数字!"); return false; } var year = parseInt("19" + sfzh.substr(6,2)); var month = sfzh.substr(8,2); var day = parseInt(sfzh.substr(10,2)); alert("ny"+checkMonthDay(year,month,day)); if(!checkMonthDay(year,month,day)) return false; // var nowYear = new Date().getYear(); // if(nowYear - parseInt(year)<15 || nowYear - parseInt(year)>100) { // alert('输入身份证号码格式不正确!'); // return false; // } return true; } /*18位身份证需要验证最后一位校验位 */ if(sfzh.length == 18){ //出生年月 var year = parseInt(sfzh.substr(6,4)); var month = sfzh.substr(10,2); var day = parseInt(sfzh.substr(12,2)); if(!checkMonthDay(year,month,day)) return false; sfzh = sfzh.split(''); //∑(ai×Wi)(mod 11) //加权因子 var factor = [ 7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2 ]; //校验位 /*校验位规则 公式:∑(ai×Wi)(mod 11)……………………………………(1) 公式(1)中: ai----表示第i位置上的号码字符值; Wi----示第i位置上的加权因子,其数值依据公式Wi=2^(n-1)(mod 11)计算得出。 Wi 7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2 1 */ //余数[ 0 1 2 3 4 5 6 7 8 9 10] var parity = [ 1, 0, 'X', 9, 8, 7, 6, 5, 4, 3, 2 ]; var sum = 0; var ai = 0; var wi = 0; for (var i = 0; i < 17; i++) { ai = sfzh[i]; wi = factor[i]; sum += ai * wi; } var last = parity[sum % 11]; // alert("余数"+sum % 11); // alert("校验"+last); if(last != sfzh[17]){ mini.alert('输入身份证号码格式不正确(校验位错误)!'); return false; } return true; } } function checkMonthDay(year,month,day){ //出生年月校验 switch(month) { case '01': case '03': case '05': case '07': case '08': case '10': case '12': if(day>31) { mini.alert('输入身份证号码格式不正确(出生日期,年月非法)!'); return false; } break; case '04': case '06': case '09': case '11': if(day>30) { mini.alert('输入身份证号码格式不正确(出生日期,年月非法)!'); return false; } break; case '02': if((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) { if(day>29) { mini.alert('输入身份证号码格式不正确(出生日期,年月非法)!'); return false; } }else { if(day>28) { mini.alert('输入身份证号码格式不正确(出生日期,年月非法)!'); return false; } } break; default: mini.alert('输入身份证号码格式不正确(出生日期,月份非法)!'); return false; } return true;}
阅读全文
1 0
- js --身份证号合法性校验
- SQLSERVER校验身份证号 合法性
- 身份证号校验的 js
- JS严格校验身份证号
- JS 身份证号校验 年龄校验
- js校验身份证号码合法性
- js校验(正则 地址 身份证号)
- 日期字符串合法性js校验
- js脚本校验身份证号码合法性
- 身份证号正则校验(js校验+JAVA校验)
- 身份证号校验
- 身份证号校验
- 身份证号校验
- 身份证号校验
- 验证身份证号的合法性
- 身份证校验(//身份证号合法性验证 //支持15位和18位身份证号//支持地址编码、出生日期、校验位验证)
- java身份证合法性校验并获取并根据身份证号提取身份证相关信息
- js身份证号码的校验,支持15位身份证号和18位身份证号
- POJ | 4135:月度开销
- java泛型中遇到的一些问题
- HandlerThread详解
- lintcode--数字组合
- python中去掉字符串中的空格
- js --身份证号合法性校验
- 推荐算法中的MF, PMF, BPMF
- POJ 1953 World Cup Noise(数位DP 01串)
- HTTP请求、响应报文格式
- java环境变量详解---找不到或无法加载主类
- JDBC详解
- 排列组合
- 使用批处理生成多个解决方案
- Ubuntu16桌面启动器的移动方式