身份证号码前六位所代表的省,市,区, 以及地区编码下载 |
在我上一篇文章里面,讨论了如何验证15,18位身份证号码的合法性,并能取得一些简单的信息, 比如:身份,生日,性别等 。 现在,可以取城市和地区了 。 复制代码 代码如下: <script language="javascript"> // 地区代码实在太大了,我这里只贴出 北京,上海,广州的代码,完整国内地区编码请下载附件 // Go_Rush(阿舜) from http://ashun.cnblogs.com/ var areaCode={ 11:北京市,1101:北京市市辖区,110101:北京市东城区,110102:北京市西城区 ,110103:北京市崇文区,110104:北京市宣武区,110105:北京市朝阳区,110106:北京市丰台区 ,110107:北京市石景山区,110108:北京市海淀区,110109:北京市门头沟区,110111:北京市房山区 ,1102:北京市市辖县,110221:北京市昌平县,110222:北京市顺义县,110223:北京市通县 ,110224:北京市大兴县,110226:北京市平谷县,110227:北京市怀柔县,110228:北京市密云县 ,110229:北京市延庆县 ,12:天津市,1201:天津市市辖区,120101:天津市和平区 ,120102:天津市河东区,120103:天津市河西区,120104:天津市南开区,120105:天津市河北区 ,120106:天津市红桥区,120107:天津市塘沽区,120108:天津市汉沽区,120109:天津市大港区 ,120110:天津市东丽区,120111:天津市西青区,120112:天津市津南区,120113:天津市北辰区 ,1202:天津市市辖县,120221:天津市宁河县,120222:天津市武清县,120223:天津市静海县 ,120224:天津市宝坻县,120225:天津市蓟县 ,31:上海市 ,3101:上海市市辖区,310101:上海市黄浦区,310102:上海市南市区,310103:上海市卢湾区 ,310104:上海市徐汇区,310105:上海市长宁区,310106:上海市静安区,310107:上海市普陀区 ,310108:上海市闸北区,310109:上海市虹口区,310110:上海市扬浦区,310112:上海市闵行区 ,310113:上海市宝山区,310114:上海市嘉定区,310115:上海市浦东新区,3102:上海市市辖县 ,310225:上海市南汇县,310226:上海市奉贤县,310227:上海市松江县,310228:上海市金山县 ,310229:上海市青浦县,310230:上海市崇明县 ,44:广东省,4401:广东省广州市,440101:广东省广州市市辖区 ,440102:广东省广州市东山区,440103:广东省广州市荔湾区 ,440104:广东省广州市越秀区,440105:广东省广州市海珠区 ,440106:广东省广州市天河区,440107:广东省广州市芳村区 ,440111:广东省广州市白云区,440112:广东省广州市黄埔区 ,440122:广东省从花县,440181:广东省番禺市,440182:广东省花都市,440183:广东省增城市 ,71:台湾省,7100:台湾,710000:台湾省 ,72:香港,7200:香港特别行政区,720000:香港特别行政区 ,73:澳门,7300:澳门特别行政区 ,91:国外 } function checkId(pId){ var arrVerifyCode = [1,0,"x",9,8,7,6,5,4,3,2]; var Wi = [7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2]; var Checker = [1,9,8,7,6,5,4,3,2,1,1]; if(pId.length != 15 && pId.length != 18) return "身份证号共有 15 码或18位"; var Ai=pId.length==18?pId.substring(0,17):pId.slice(0,6)+"19"+pId.slice(6,16); if (!/^\d+$/.test(Ai)) return "身份证除最后一位外,必须为数字!"; var yyyy=Ai.slice(6,10),mm=Ai.slice(10,12)-1,dd=Ai.slice(12,14); var d=new Date(yyyy,mm,dd),year=d.getFullYear(),mon=d.getMonth(),day=d.getDate(),now=new Date(); if (year!=yyyy || mon!=mm || day!=dd || d>now || now.getFullYear()-year>140) return "身份证输入错误!"; for(var i=0,ret=0;i<17;i++) ret+=Ai.charAt(i)*Wi[i]; Ai+=arrVerifyCode[ret %=11]; return pId.length ==18 && pId.toLowerCase() != Ai?"身份证输入错误!":Ai; }; function getInfo(id){ //根据身份证取 省份,生日,性别 Go_Rush(阿舜) from http://ashun.cnblogs.com/ id=checkId(id) if (isNaN(id)) return "错误的身份证号码" var id=String(id),sex=id.slice(14,17)%2?"男":"女" prov=areaCode[id.slice(0,6)] || areaCode[id.slice(0,4)] || areaCode[id.slice(0,2)] || "未知地区" var birthday=(new Date(id.slice(6,10),id.slice(10,12)-1,id.slice(12,14))).toLocaleDateString() return [prov,birthday,sex] } var id="110102198006262301" alert(getInfo(id)) </script> 下载(64kb) 建议: 地区编码很大,900多行,90Kb大小,建议把他们放在数据库里面通过Ajax来取 |