Welcome 微信登录

首页 / 脚本样式 / JavaScript / 身份证号码前六位所代表的省,市,区, 以及地区编码下载

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