首页 / 脚本样式 / 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来取