身份证号码前六位所代表的省,市,区, 以及地区编码下载


在我上一篇文章里面,讨论了如何验证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来取