仿12306身份验证
2016-02-04 09:47
246 查看
/** * 一代身份证,二代身份证 * @param g * @returns {boolean} */ function validateFirIdCard(idCard){ var f = 0; var result; var provinceCode={ 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(idCard.length==15){ result = idCardUpdate(idCard); }else{ result = idCard; } if(!/^\d{17}(\d|x)$/i.test(result)){ return false } result = result.replace(/x$/i,"a"); if(provinceCode[parseInt(result.substr(0,2))]==null){ return false } var dateStr = result.substr(6,4)+"-"+Number(result.substr(10,2))+"-"+Number(result.substr(12,2)); var date = new Date(dateStr.replace(/-/g,"/")); if(dateStr!=(date.getFullYear()+"-"+(date.getMonth()+1)+"-"+date.getDate())){ return false } for(var b = 17;b >= 0;b--){ f += (Math.pow(2,b)%11)*parseInt(result.charAt(17-b),11) } if(f%11!=1){ return false; } return true; } /** * 二代身份证 * @param idCard * @returns {boolean} */ function validateSecIdCard(idCard){ var f=0; var result = idCard; var provinceCode={ 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(!/^\d{17}(\d|x)$/i.test(result)){ return false } result = result.replace(/x$/i,"a"); if(provinceCode[parseInt(result.substr(0,2))]==null){ return false } var dateStr = result.substr(6,4)+"-"+Number(result.substr(10,2))+"-"+Number(result.substr(12,2)); var date = new Date(dateStr.replace(/-/g,"/")); if(dateStr!=(date.getFullYear()+"-"+(date.getMonth()+1)+"-"+date.getDate())){ return false } for(var b=17;b>=0;b--){ f += (Math.pow(2,b)%11) * parseInt(result.charAt(17-b),11) } if(f%11!=1){ return false } return true } function idCardUpdate(idCard){ var result; var fir_regex=/^(\d){15}$/; if(fir_regex.test(idCard)){ var e=0; //加权因子 var weight = new Array(7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2); //校验码 var checkCode = new Array("1","0","X","9","8","7","6","5","4","3","2"); idCard = idCard.substr(0,6)+"19"+idCard.substr(6,idCard.length-6); for(var c=0;c<idCard.length;c++){ e += parseInt(idCard.substr(c,1)) * weight[c] } idCard += checkCode[e%11]; result = idCard; }else{ result="#"; } return result; }
相关文章推荐
- spring和hibernate整合项目从Myeclipse转移到SpringToolSuit
- openpyxl笔记2
- 【翻译】eJabberd 外部脚本的使用
- 张小龙用这8句话表达了NB产品的一切(转)
- CSU1608: Particle Collider(后缀数组)
- Arduino接口-week4-Lesson3
- 发手气红包算法
- Unity 2D场景缩放
- Scrapy爬虫框架笔记
- SesJs
- 分享我对JS插件开发的一些感想和心得
- sqlserver 企业版下载地址
- 数据结构-散列表
- Fragment嵌套ViewPager切换后数据消失ViewPager空白问题
- [javascript-snippet]使用javascript+html5实现图片的灰度处理
- 查看图片翻转功能
- Spark Streaming学习与实践(2)
- APP数据共享
- 转换坐标系
- SQL Server 诊断查询-(5)