1、先写两个js脚本
IDValidator.js
<script type="text/javascript">
function IDValidator() {
var param = {
error : {
longNumber : '长数字存在精度问题,请使用字符串传值! Long number is not allowed, because the precision of the Number In JavaScript.'
}
};
var util = {
checkArg : function(id) {
var argType = (typeof id);
switch (argType) {
case 'number':
// long number not allowed
id = id.toString();
if (id.length > 15) {
this.error(param.error.longNumber);
return false;
}
break;
case 'string':
break;
default:
return false;
}
id = id.toUpperCase();
var code = null;
if (id.length === 18) {
// 18位
code = {
body : id.slice(0, 17),
checkBit : id.slice(-1),
type : 18
};
} else if (id.length === 15) {
// 15位
code = {
body : id,
type : 15
};
} else {
return false;
}
return code;
}
// 地址码检查
,
checkAddr : function(addr, GB2260) {
var addrInfo = this.getAddrInfo(addr, GB2260);
return (addrInfo === false ? false : true);
}
// 取得地址码信息
,
getAddrInfo : function(addr, GB2260) {
GB2260 = GB2260 || null;
// 查询GB/T2260,没有引入GB2260时略过
if (GB2260 === null) {
return addr;
}
if (!GB2260.hasOwnProperty(addr)) {
// 考虑标准不全的情况,搜索不到时向上搜索
var tmpAddr;
tmpAddr = addr.slice(0, 4) + '00';
if (!GB2260.hasOwnProperty(tmpAddr)) {
tmpAddr = addr.slice(0, 2) + '0000';
if (!GB2260.hasOwnProperty(tmpAddr)) {
return false;
} else {
return GB2260[tmpAddr] + '未知地区';
}
} else {
return GB2260[tmpAddr] + '未知地区';
}
} else {
return GB2260[addr];
}
}
// 生日码检查
,
checkBirth : function(birth) {
var year, month, day;
if (birth.length == 8) {
year = parseInt(birth.slice(0, 4), 10);
month = parseInt(birth.slice(4, 6), 10);
day = parseInt(birth.slice(-2), 10);
} else if (birth.length == 6) {
year = parseInt('19' + birth.slice(0, 2), 10);
month = parseInt(birth.slice(2, 4), 10);
day = parseInt(birth.slice(-2), 10);
} else {
return false;
}
// TODO 是否需要判断年份
/*
* if( year<1800 ){ return false; }
*/
// TODO 按月份检测
if (month > 12 || month === 0 || day > 31 || day === 0) {
return false;
}
return true;
}
// 顺序码检查
,
checkOrder : function(order) {
// 暂无需检测
return true;
}
// 加权
,
weight : function(t) {
return Math.pow(2, t - 1) % 11;
}
// 随机整数
,
rand : function(max, min) {
min = min || 1;
return Math.round(Math.random() * (max - min)) + min;
}
// 数字补位
,
str_pad : function(str, len, chr, right) {
str = str.toString();
len = len || 2;
chr = chr || '0';
right = right || false;
if (str.length >= len) {
return str;
} else {
for (var i = 0, j = len - str.length; i < j; i++) {
if (right) {
str = str + chr;
} else {
str = chr + str;
}
}
return str;
}
}
// 抛错
,
error : function(msg) {
var e = new Error();
e.message = 'IDValidator: ' + msg;
throw e;
}
};
var _IDValidator = function(GB2260) {
if (typeof GB2260 !== "undefined") {
this.GB2260 = GB2260;
}
// 建立cache
this.cache = {};
};
_IDValidator.prototype = {
isValid : function(id) {
var GB2260 = this.GB2260 || null;
var code = util.checkArg(id);
if (code === false) {
return false;
}
// 查询cache
if (this.cache.hasOwnProperty(id)
&& typeof this.cache[id].valid !== 'undefined') {
return this.cache[id].valid;
} else {
if (!this.cache.hasOwnProperty(id)) {
this.cache[id] = {};
}
}
var addr = code.body.slice(0, 6);
var birth = (code.type === 18 ? code.body.slice(6, 14) : code.body
.slice(6, 12));
var order = code.body.slice(-3);
if (!(util.checkAddr(addr, GB2260) && util.checkBirth(birth) && util
.checkOrder(order))) {
this.cache[id].valid = false;
return false;
}
// 15位不含校验码,到此已结束
if (code.type === 15) {
this.cache[id].valid = true;
return true;
}
/* 校验位部分 */
// 位置加权
var posWeight = [];
for (var i = 18; i > 1; i--) {
var wei = util.weight(i);
posWeight[i] = wei;
}
// 累加body部分与位置加权的积
var bodySum = 0;
var bodyArr = code.body.split('');
for (var j = 0; j < bodyArr.length; j++) {
bodySum += (parseInt(bodyArr[j], 10) * posWeight[18 - j]);
}
// 得出校验码
var checkBit = 12 - (bodySum % 11);
if (checkBit == 10) {
checkBit = 'X';
} else if (checkBit > 10) {
checkBit = checkBit % 11;
}
checkBit = (typeof checkBit === 'number' ? checkBit.toString()
: checkBit);
// 检查校验码
if (checkBit !== code.checkBit) {
this.cache[id].valid = false;
return false;
} else {
this.cache[id].valid = true;
return true;
}
}
// 分析详细信息
,
getInfo : function(id) {
var GB2260 = this.GB2260 || null;
// 号码必须有效
if (this.isValid(id) === false) {
return false;
}
// TODO 复用此部分
var code = util.checkArg(id);
// 查询cache
// 到此时通过isValid已经有了cache记录
if (typeof this.cache[id].info !== 'undefined') {
return this.cache[id].info;
}
var addr = code.body.slice(0, 6);
var birth = (code.type === 18 ? code.body.slice(6, 14) : code.body
.slice(6, 12));
var order = code.body.slice(-3);
var info = {};
info.addrCode = addr;
if (GB2260 !== null) {
info.addr = util.getAddrInfo(addr, GB2260);
}
info.birth = (code.type === 18 ? (([ birth.slice(0, 4),
birth.slice(4, 6), birth.slice(-2) ]).join('-')) : ([
'19' + birth.slice(0, 2), birth.slice(2, 4),
birth.slice(-2) ]).join('-'));
info.sex = (order % 2 === 0 ? 0 : 1);
info.length = code.type;
if (code.type === 18) {
info.checkBit = code.checkBit;
}
// 记录cache
this.cache[id].info = info;
return info;
}
// 仿造一个号
,
makeID : function(isFifteen) {
var GB2260 = this.GB2260 || null;
// 地址码
var addr = null;
if (GB2260 !== null) {
var loopCnt = 0;
while (addr === null) {
// 防止死循环
if (loopCnt > 10) {
addr = 110101;
break;
}
var prov = util.str_pad(util.rand(50), 2, '0');
var city = util.str_pad(util.rand(20), 2, '0');
var area = util.str_pad(util.rand(20), 2, '0');
var addrTest = [ prov, city, area ].join('');
if (GB2260[addrTest]) {
addr = addrTest;
break;
}
}
} else {
addr = 110101;
}
// 出生年
var yr = util.str_pad(util.rand(99, 50), 2, '0');
var mo = util.str_pad(util.rand(12, 1), 2, '0');
var da = util.str_pad(util.rand(28, 1), 2, '0');
if (isFifteen) {
return addr + yr + mo + da
+ util.str_pad(util.rand(999, 1), 3, '1');
}
yr = '19' + yr;
var body = addr + yr + mo + da
+ util.str_pad(util.rand(999, 1), 3, '1');
// 位置加权
var posWeight = [];
for (var i = 18; i > 1; i--) {
var wei = util.weight(i);
posWeight[i] = wei;
}
// 累加body部分与位置加权的积
var bodySum = 0;
var bodyArr = body.split('');
for (var j = 0; j < bodyArr.length; j++) {
bodySum += (parseInt(bodyArr[j], 10) * posWeight[18 - j]);
}
// 得出校验码
var checkBit = 12 - (bodySum % 11);
if (checkBit == 10) {
checkBit = 'X';
} else if (checkBit > 10) {
checkBit = checkBit % 11;
}
checkBit = (typeof checkBit === 'number' ? checkBit.toString()
: checkBit);
return (body + checkBit);
}
};// _IDValidator
GB2260 = GB2260 == null ? "" : GB2260;
return new _IDValidator(GB2260);
}
</script>
GB2260.js
<script type="text/javascript">
var GB2260 = {
"110000" : "北京市",
"110100" : "北京市市辖区",
"110101" : "北京市东城区",
"110102" : "北京市西城区",
"110103" : "北京市崇文区",
"110104" : "北京市宣武区",
"110105" : "北京市朝阳区",
"110106" : "北京市丰台区",
"110107" : "北京市石景山区",
"110108" : "北京市海淀区",
"110109" : "北京市门头沟区",
"110111" : "北京市房山区",
"110112" : "北京市通州区",
"110113" : "北京市顺义区",
"110200" : "北京市县",
"110221" : "北京市昌平县",
"110224" : "北京市大兴县",
"110226" : "北京市平谷县",
"110227" : "北京市怀柔县",
"110228" : "北京市密云县",
"110229" : "北京市延庆县",
"120000" : "天津市",
"120100" : "天津市市辖区",
"120101" : "天津市和平区",
"120102" : "天津市河东区",
"120103" : "天津市河西区",
"120104" : "天津市南开区",
"120105" : "天津市河北区",
"120106" : "天津市红桥区",
"120107" : "天津市塘沽区",
"120108" : "天津市汉沽区",
"120109" : "天津市大港区",
"120110" : "天津市东丽区",
"120111" : "天津市西青区",
"120112" : "天津市津南区",
"120113" : "天津市北辰区",
"120200" : "天津市县",
"120221" : "天津市宁河县",
"120222" : "天津市武清县",
"120223" : "天津市静海县",
"120224" : "天津市宝坻县",
"120225" : "天津市蓟县",
"130000" : "河北省",
"130100" : "河北省石家庄市",
"130101" : "河北省石家庄市市辖区",
"130102" : "河北省石家庄市长安区",
"130103" : "河北省石家庄市桥东区",
"130104" : "河北省石家庄市桥西区",
"130105" : "河北省石家庄市新华区",
"130106" : "河北省石家庄市郊区",
"130107" : "河北省石家庄市井陉矿区",
"130121" : "河北省石家庄市井陉县",
"130123" : "河北省石家庄市正定县",
"130124" : "河北省石家庄市栾城县",
"130125" : "河北省石家庄市行唐县",
"130126" : "河北省石家庄市灵寿县",
"130127" : "河北省石家庄市高邑县",
"130128" : "河北省石家庄市深泽县",
"130129" : "河北省石家庄市赞皇县",
"130130" : "河北省石家庄市无极县",
"130131" : "河北省石家庄市平山县",
"130132" : "河北省石家庄市元氏县",
"130133" : "河北省石家庄市赵县",
"130181" : "河北省石家庄市辛集市",
"130182" : "河北省石家庄市藁城市",
"130183" : "河北省石家庄市晋州市",
"130184" : "河北省石家庄市新乐市",
"130185" : "河北省石家庄市鹿泉市",
"130200" : "河北省唐山市",
"130201" : "河北省唐山市市辖区",
"130202" : "河北省唐山市路南区",
"130203" : "河北省唐山市路北区",
"130204" : "河北省唐山市古冶区",
"130205" : "河北省唐山市开平区",
"130206" : "河北省唐山市新区",
"130221" : "河北省唐山市丰润县",
"130223" : "河北省唐山市滦县",
"130224" : "河北省唐山市滦南县",
"130225" : "河北省唐山市乐亭县",
"130227" : "河北省唐山市迁西县",
"130229" : "河北省唐山市玉田县",
"130230" : "河北省唐山市唐海县",
"130281" : "河北省唐山市遵化市",
"130282" : "河北省唐山市丰南市",
"130283" : "河北省唐山市迁安市",
"130300" : "河北省秦皇岛市秦皇岛市",
"130301" : "河北省秦皇岛市市辖区",
"130302" : "河北省秦皇岛市海港区",
"130303" : "河北省秦皇岛市山海关区",
"130304" : "河北省秦皇岛市北戴河区",
"130321" : "河北省秦皇岛市青龙满族自治县",
"130322" : "河北省秦皇岛市昌黎县",
"130323" : "河北省秦皇岛市抚宁县",
"130324" : "河北省秦皇岛市卢龙县",
"130400" : "河北省邯郸市邯郸市",
"130401" : "河北省邯郸市市辖区",
"130402" : "河北省邯郸市邯山区",
"130403" : "河北省邯郸市丛台区",
"130404" : "河北省邯郸市复兴区",
"130406" : "河北省邯郸市峰峰矿区",
"130421" : "河北省邯郸市邯郸县",
"130423" : "河北省邯郸市临漳县",
"130424" : "河北省邯郸市成安县",
"130425" : "河北省邯郸市大名县",
"130426" : "河北省邯郸市涉县",
"130427" : "河北省邯郸市磁县",
"130428" : "河北省邯郸市肥乡县",
"130429" : "河北省邯郸市永年县",
"130430" : "河北省邯郸市邱县",
"130431" : "河北省邯郸市鸡泽县",
"130432" : "河北省邯郸市广平县",
"130433" : "河北省邯郸市馆陶县",
"130434" : "河北省邯郸市魏县",
"130435" : "河北省邯郸市曲周县",
"130481" : "河北省邯郸市武安市",
"130500" : "河北省邢台市",
"130501" : "河北省邢台市市辖区",
"130502" : "河北省邢台市桥东区",
"130503" : "河北省邢台市桥西区",
"130521" : "河北省邢台市邢台县",
"130522" : "河北省邢台市临城县",
"130523" : "河北省邢台市内丘县",
"130524" : "河北省邢台市柏乡县",
"130525" : "河北省邢台市隆尧县",
"130526" : "河北省邢台市任县",
"130527" : "河北省邢台市南和县",
"130528" : "河北省邢台市宁晋县",
"130529" : "河北省邢台市巨鹿县",
"130530" : "河北省邢台市新河县",
"130531" : "河北省邢台市广宗县",
"130532" : "河北省邢台市平乡县",
"130533" : "河北省邢台市威县",
"130534" : "河北省邢台市清河县",
"130535" : "河北省邢台市临西县",
"130581" : "河北省邢台市南宫市",
"130582" : "河北省邢台市沙河市",
"130600" : "河北省保定市",
"130601" : "河北省保定市市辖区",
"130602" : "河北省保定市新市区",
"130603" : "河北省保定市北市区",
"130604" : "河北省保定市南市区",
"130621" : "河北省保定市满城县",
"130622" : "河北省保定市清苑县",
"130623" : "河北省保定市涞水县",
"130624" : "河北省保定市阜平县",
"130625" : "河北省保定市徐水县",
"130626" : "河北省保定市定兴县",
"130627" : "河北省保定市唐县",
"130628" : "河北省保定市高阳县",
"130629" : "河北省保定市容城县",
"130630" : "河北省保定市涞源县",
"130631" : "河北省保定市望都县",
"130632" : "河北省保定市安新县",
"130633" : "河北省保定市易县",
"130634" : "河北省保定市曲阳县",
"130635" : "河北省保定市蠡县",
"130636" : "河北省保定市顺平县",
"130637" : "河北省保定市博野县",
"130638" : "河北省保定市雄县",
"130681" : "河北省保定市涿州市",
"130682" : "河北省保定市定州市",
"130683" : "河北省保定市安国市",
"130684" : "河北省保定市高碑店市",
"130700" : "河北省张家口市",
"130701" : "河北省张家口市市辖区",
"130702" : "河北省张家口市桥东区",
"130703" : "河北省张家口市桥西区",
"130705" : "河北省张家口市宣化区",
"130706" : "河北省张家口市下花园区",
"130721" : "河北省张家口市宣化县",
"130722" : "河北省张家口市张北县",
"130723" : "河北省张家口市康保县",
"130724" : "河北省张家口市沽源县",
"130725" : "河北省张家口市尚义县",
"130726" : "河北省张家口市蔚县",
"130727" : "河北省张家口市阳原县",
"130728" : "河北省张家口市怀安县",
"130729" : "河北省张家口市万全县",
"130730" : "河北省张家口市怀来县",
"130731" : "河北省张家口市涿鹿县",
"130732" : "河北省张家口市赤城县",
"130733" : "河北省张家口市崇礼县",
"130800" : "河北省承德市",
"130801" : "河北省承德市市辖区",
"130802" : "河北省承德市双桥区",
"130803" : "河北省承德市双滦区",
"130804" : "河北省承德市鹰手营子矿区",
"130821" : "河北省承德市承德县",
"130822" : "河北省承德市兴隆县",
"130823" : "河北省承德市平泉县",
"130824" : "河北省承德市滦平县",
"130825" : "河北省承德市隆化县",
"130826" : "河北省承德市丰宁满族自治县",
"130827" : "河北省承德市宽城满族自治县",
"130828" : "河北省承德市围场满族蒙古族自治县",
"130900" : "河北省沧州市",
"130901" : "河北省沧州市市辖区",
"130902" : "河北省沧州市新华区",
"130903" : "河北省沧州市运河区",
"130921" : "河北省沧州市沧县",
"130922" : "河北省沧州市青县",
"130923" : "河北省沧州市东光县",
"130924" : "河北省沧州市海兴县",
"130925" : "河北省沧州市盐山县",
"130926" : "河北省沧州市肃宁县",
"130927" : "河北省沧州市南皮县",
"130928" : "河北省沧州市吴桥县",
"130929" : "河北省沧州市献县",
"130930" : "河北省沧州市孟村回族自治县",
"130981" : "河北省沧州市泊头市",
"130982" : "河北省沧州市任丘市",
"130983" : "河北省沧州市黄骅市",
"130984" : "河北省沧州市河间市",
"131000" : "河北省廊坊市",
"131001" : "河北省廊坊市市辖区",
"131002" : "河北省廊坊市安次区",
"131022" : "河北省廊坊市固安县",
"131023" : "河北省廊坊市永清县",
"131024" : "河北省廊坊市香河县",
"131025" : "河北省廊坊市大城县",
"131026" : "河北省廊坊市文安县",
"131028" : "河北省廊坊市大厂回族自治县",
"131081" : "河北省廊坊市霸州市",
"131082" : "河北省廊坊市三河市",
"131100" : "河北省衡水市",
"131101" : "河北省衡水市市辖区",
"131102" : "河北省衡水市桃城区",
"131121" : "河北省衡水市枣强县",
"131122" : "河北省衡水市武邑县",
"131123" : "河北省衡水市武强县",
"131124" : "河北省衡水市饶阳县",
"131125" : "河北省衡水市安平县",
"131126" : "河北省衡水市故城县",
"131127" : "河北省衡水市景县",
"131128" : "河北省衡水市阜城县",
"131181" : "河北省衡水市冀州市",
"131182" : "河北省衡水市深州市",
"140000" : "山西省",
"140100" : "山西省太原市",
"140101" : "山西省太原市市辖区",
"140105" : "山西省太原市小店区",
"140106" : "山西省太原市迎泽区",
"140107" : "山西省太原市杏花岭区",
"140108" : "山西省太原市尖草坪区",
"140109" : "山西省太原市万柏林区",
"140110" : "山西省太原市晋源区",
"140121" : "山西省太原市清徐县",
"140122" : "山西省太原市阳曲县",
"140123" : "山西省太原市娄烦县",
"140181" : "山西省太原市古交市",
"140200" : "山西省大同市",
"140201" : "山西省大同市市辖区",
"140202" : "山西省大同市城区",
"140203" : "山西省大同市矿区",
"140211" : "山西省大同市南郊区",
"140212" : "山西省大同市新荣区",
"140221" : "山西省大同市阳高县",
"140222" : "山西省大同市天镇县",
"140223" : "山西省大同市广灵县",
"140224" : "山西省大同市灵丘县",
"140225" : "山西省大同市浑源县",
"140226" : "山西省大同市左云县",
"140227" : "山西省大同市大同县",
"140300" : "山西省阳泉市",
"140301" : "山西省阳泉市市辖区",
"140302" : "山西省阳泉市城区",
"140303" : "山西省阳泉市矿区",
"140311" : "山西省阳泉市郊区",
"140321" : "山西省阳泉市平定县",
"140322" : "山西省阳泉市盂县",
"140400" : "山西省长治市",
"140401" : "山西省长治市市辖区",
"140402" : "山西省长治市城区",
"140411" : "山西省长治市郊区",
"140421" : "山西省长治市长治县",
"140423" : "山西省长治市襄垣县",
"140424" : "山西省长治市屯留县",
"140425" : "山西省长治市平顺县",
"140426" : "山西省长治市黎城县",
"140427" : "山西省长治市壶关县",
"140428" : "山西省长治市长子县",
"140429" : "山西省长治市武乡县",
"140430" : "山西省长治市沁县",
"140431" : "山西省长治市沁源县",
"140481" : "山西省长治市潞城市",
"140500" : "山西省晋城市",
"140501" : "山西省晋城市市辖区",
"140502" : "山西省晋城市城区",
"140521" : "山西省晋城市沁水县",
"140522" : "山西省晋城市阳城县",
"140524" : "山西省晋城市陵川县",
"140525" : "山西省晋城市泽州县",
"140581" : "山西省晋城市高平市",
"140600" : "山西省晋城市朔州市",
"140601" : "山西省晋城市市辖区",
"140602" : "山西省晋城市朔城区",
"140603" : "山西省晋城市平鲁区",
"140621" : "山西省晋城市山阴县",
"140622" : "山西省晋城市应县",
"140623" : "山西省晋城市右玉县",
"140624" : "山西省晋城市怀仁县",
"142200" : "山西省忻州地区",
"142201" : "山西省忻州地区忻州市",
"142202" : "山西省忻州地区原平市",
"142222" : "山西省忻州地区定襄县",
"142223" : "山西省忻州地区五台县",
"142225" : "山西省忻州地区代县",
"142226" : "山西省忻州地区繁峙县",
"142227" : "山西省忻州地区宁武县",
"142228" : "山西省忻州地区静乐县",
"142229" : "山西省忻州地区神池县",
"142230" : "山西省忻州地区五寨县",
"142231" : "山西省忻州地区岢岚县",
"142232" : "山西省忻州地区河曲县",
"142233" : "山西省忻州地区保德县",
"142234" : "山西省忻州地区偏关县",
"142300" : "山西省忻州地区吕梁地区",
"142301" : "山西省忻州地区孝义市",
"142302" : "山西省忻州地区离石市",
"142303" : "山西省忻州地区汾阳市",
"142322" : "山西省忻州地区文水县",
"142323" : "山西省忻州地区交城县",
"142325" : "山西省忻州地区兴县",
"142326" : "山西省忻州地区临县",
"142327" : "山西省忻州地区柳林县",
"142328" : "山西省忻州地区石楼县",
"142329" : "山西省忻州地区岚县",
"142330" : "山西省忻州地区方山县",
"142332" : "山西省忻州地区中阳县",
"142333" : "山西省忻州地区交口县",
"142400" : "山西省晋中地区",
"142401" : "山西省晋中地区榆次市",
"142402" : "山西省晋中地区介休市",
"142421" : "山西省晋中地区榆社县",
"142422" : "山西省晋中地区左权县",
"142423" : "山西省晋中地区和顺县",
"142424" : "山西省晋中地区昔阳县",
"142427" : "山西省晋中地区寿阳县",
"142429" : "山西省晋中地区太谷县",
"142430" : "山西省晋中地区祁县",
"142431" : "山西省晋中地区平遥县",
"142433" : "山西省晋中地区灵石县",
"142600" : "山西省临汾地区",
"142601" : "山西省临汾地区临汾市",
"142602" : "山西省临汾地区侯马市",
"142603" : "山西省临汾地区霍州市",
"142621" : "山西省临汾地区曲沃县",
"142622" : "山西省临汾地区翼城县",
"142623" : "山西省临汾地区襄汾县",
"142625" : "山西省临汾地区洪洞县",
"142627" : "山西省临汾地区古县",
"142628" : "山西省临汾地区安泽县",
"142629" : "山西省临汾地区浮山县",
"142630" : "山西省临汾地区吉县",
"142631" : "山西省临汾地区乡宁县",
"142632" : "山西省临汾地区蒲县",
"142633" : "山西省临汾地区大宁县",
"142634" : "山西省临汾地区永和县",
"142635" : "山西省临汾地区隰县",
"142636" : "山西省临汾地区汾西县",
"142700" : "山西省运城地区",
"142701" : "山西省运城地区运城市",
"142702" : "山西省运城地区永济市",
"142703" : "山西省运城地区河津市",
"142723" : "山西省运城地区芮城县",
"142724" : "山西省运城地区临猗县",
"142725" : "山西省运城地区万荣县",
"142726" : "山西省运城地区新绛县",
"142727" : "山西省运城地区稷山县",
"142729" : "山西省运城地区闻喜县",
"142730" : "山西省运城地区夏县",
"142731" : "山西省运城地区绛县",
"142732" : "山西省运城地区平陆县",
"142733" : "山西省运城地区垣曲县",
"150000" : "内蒙古自治区",
"150100" : "内蒙古自治区呼和浩特市",
"150101" : "内蒙古自治区呼和浩特市市辖区",
"150102" : "内蒙古自治区呼和浩特市新城区",
"150103" : "内蒙古自治区呼和浩特市回民区",
"150104" : "内蒙古自治区呼和浩特市玉泉区",
"150105" : "内蒙古自治区呼和浩特市郊区",
"150121" : "内蒙古自治区呼和浩特市土默特左旗",
"150122" : "内蒙古自治区呼和浩特市托克托县",
"150123" : "内蒙古自治区呼和浩特市和林格尔县",
"150124" : "内蒙古自治区呼和浩特市清水河县",
"150125" : "内蒙古自治区呼和浩特市武川县",
"150200" : "内蒙古自治区包头市",
"150201" : "内蒙古自治区包头市市辖区",
"150202" : "内蒙古自治区包头市东河区",
"150203" : "内蒙古自治区包头市昆都伦区",
"150204" : "内蒙古自治区包头市青山区",
"150205" : "内蒙古自治区包头市石拐矿区",
"150206" : "内蒙古自治区包头市白云矿区",
"150207" : "内蒙古自治区包头市郊区",
"150221" : "内蒙古自治区包头市土默特右旗",
"150222" : "内蒙古自治区包头市固阳县",
"150223" : "内蒙古自治区包头市达尔罕茂明安联合旗",
"150300" : "内蒙古自治区乌海市",
"150301" : "内蒙古自治区乌海市市辖区",
"150302" : "内蒙古自治区乌海市海勃湾区",
"150303" : "内蒙古自治区乌海市海南区",
"150304" : "内蒙古自治区乌海市乌达区",
"150400" : "内蒙古自治区赤峰市",
"150401" : "内蒙古自治区赤峰市市辖区",
"150402" : "内蒙古自治区赤峰市红山区",
"150403" : "内蒙古自治区赤峰市元宝山区",
"150404" : "内蒙古自治区赤峰市松山区",
"150421" : "内蒙古自治区赤峰市阿鲁科尔沁旗",
"150422" : "内蒙古自治区赤峰市巴林左旗",
"150423" : "内蒙古自治区赤峰市巴林右旗",
"150424" : "内蒙古自治区赤峰市林西县",
"150425" : "内蒙古自治区赤峰市克什克腾旗",
"150426" : "内蒙古自治区赤峰市翁牛特旗",
"150428" : "内蒙古自治区赤峰市喀喇沁旗",
"150429" : "内蒙古自治区赤峰市宁城县",
"150430" : "内蒙古自治区赤峰市敖汉旗",
"152100" : "内蒙古自治区呼伦贝尔盟",
"152101" : "内蒙古自治区呼伦贝尔盟海拉尔市",
"152102" : "内蒙古自治区呼伦贝尔盟满洲里市",
"152103" : "内蒙古自治区呼伦贝尔盟扎兰屯市",
"152104" : "内蒙古自治区呼伦贝尔盟牙克石市",
"152105" : "内蒙古自治区呼伦贝尔盟根河市",
"152106" : "内蒙古自治区呼伦贝尔盟额尔古纳市",
"152122" : "内蒙古自治区呼伦贝尔盟阿荣旗",
"152123" : "内蒙古自治区呼伦贝尔盟莫力达瓦达斡尔族自治旗",
"152127" : "内蒙古自治区呼伦贝尔盟鄂伦春自治旗",
"152128" : "内蒙古自治区呼伦贝尔盟鄂温克族自治旗",
"152129" : "内蒙古自治区呼伦贝尔盟新巴尔虎右旗",
"152130" : "内蒙古自治区呼伦贝尔盟新巴尔虎左旗",
"152131" : "内蒙古自治区呼伦贝尔盟陈巴尔虎旗",
"152200" : "内蒙古自治区兴安盟",
"152201" : "内蒙古自治区兴安盟乌兰浩特市",
"152202" : "内蒙古自治区兴安盟阿尔山市",
"152221" : "内蒙古自治区兴安盟科尔沁右翼前旗",
"152222" : "内蒙古自治区兴安盟科尔沁右翼中旗",
"152223" : "内蒙古自治区兴安盟扎赉特旗",
"152224" : "内蒙古自治区兴安盟突泉县",
"152300" : "内蒙古自治区哲里木盟",
"152301" : "内蒙古自治区哲里木盟通辽市",
"152302" : "内蒙古自治区哲里木盟霍林郭勒市",
"152322" : "内蒙古自治区哲里木盟科尔沁左翼中旗",
"152323" : "内蒙古自治区哲里木盟科尔沁左翼后旗",
"152324" : "内蒙古自治区哲里木盟开鲁县",
"152325" : "内蒙古自治区哲里木盟库伦旗",
"152326" : "内蒙古自治区哲里木盟奈曼旗",
"152327" : "内蒙古自治区哲里木盟扎鲁特旗",
"152500" : "内蒙古自治区锡林郭勒盟",
"152501" : "内蒙古自治区锡林郭勒盟二连浩特市",
"152502" : "内蒙古自治区锡林郭勒盟锡林浩特市",
"152522" : "内蒙古自治区锡林郭勒盟阿巴嘎旗",
"152523" : "内蒙古自治区锡林郭勒盟苏尼特左旗",
"152524" : "内蒙古自治区锡林郭勒盟苏尼特右旗",
"152525" : "内蒙古自治区锡林郭勒盟东乌珠穆沁旗",
"152526" : "内蒙古自治区锡林郭勒盟西乌珠穆沁旗",
"152527" : "内蒙古自治区锡林郭勒盟太仆寺旗",
"152528" : "内蒙古自治区锡林郭勒盟镶黄旗",
"152529" : "内蒙古自治区锡林郭勒盟正镶白旗",
"152530" : "内蒙古自治区锡林郭勒盟正蓝旗",
"152531" : "内蒙古自治区锡林郭勒盟多伦县",
"152600" : "内蒙古自治区乌兰察布盟",
"152601" : "内蒙古自治区乌兰察布盟集宁市",
"152602" : "内蒙古自治区乌兰察布盟丰镇市",
"152624" : "内蒙古自治区乌兰察布盟卓资县",
"152625" : "内蒙古自治区乌兰察布盟化德县",
"152626" : "内蒙古自治区乌兰察布盟商都县",
"152627" : "内蒙古自治区乌兰察布盟兴和县",
"152629" : "内蒙古自治区乌兰察布盟凉城县",
"152630" : "内蒙古自治区乌兰察布盟察哈尔右翼前旗",
"152631" : "内蒙古自治区乌兰察布盟察哈尔右翼中旗",
"152632" : "内蒙古自治区乌兰察布盟察哈尔右翼后旗",
"152634" : "内蒙古自治区乌兰察布盟四子王旗",
"152700" : "内蒙古自治区伊克昭盟",
"152701" : "内蒙古自治区伊克昭盟东胜市",
"152722" : "内蒙古自治区伊克昭盟达拉特旗",
"152723" : "内蒙古自治区伊克昭盟准格尔旗",
"152724" : "内蒙古自治区伊克昭盟鄂托克前旗",
"152725" : "内蒙古自治区伊克昭盟鄂托克旗",
"152726" : "内蒙古自治区伊克昭盟杭锦旗",
"152727" : "内蒙古自治区伊克昭盟乌审旗",
"152728" : "内蒙古自治区伊克昭盟伊金霍洛旗",
"152800" : "内蒙古自治区巴彦淖尔盟",
"152801" : "内蒙古自治区巴彦淖尔盟临河市",
"152822" : "内蒙古自治区巴彦淖尔盟五原县",
"152823" : "内蒙古自治区巴彦淖尔盟磴口县",
"152824" : "内蒙古自治区巴彦淖尔盟乌拉特前旗",
"152825" : "内蒙古自治区巴彦淖尔盟乌拉特中旗",
"152826" : "内蒙古自治区巴彦淖尔盟乌拉特后旗",
"152827" : "内蒙古自治区巴彦淖尔盟杭锦后旗",
"152900" : "内蒙古自治区阿拉善盟",
"152921" : "内蒙古自治区阿拉善盟阿拉善左旗",
"152922" : "内蒙古自治区阿拉善盟阿拉善右旗",
"152923" : "内蒙古自治区阿拉善盟额济纳旗",
"210000" : "辽宁省",
"210100" : "辽宁省沈阳市",
"210101" : "辽宁省沈阳市市辖区",
"210102" : "辽宁省沈阳市和平区",
"210103" : "辽宁省沈阳市沈河区",
"210104" : "辽宁省沈阳市大东区",
"210105" : "辽宁省沈阳市皇姑区",
"210106" : "辽宁省沈阳市铁西区",
"210111" : "辽宁省沈阳市苏家屯区",
"210112" : "辽宁省沈阳市东陵区",
"210113" : "辽宁省沈阳市新城子区",
"210114" : "辽宁省沈阳市于洪区",
"210122" : "辽宁省沈阳市辽中县",
"210123" : "辽宁省沈阳市康平县",
"210124" : "辽宁省沈阳市法库县",
"210181" : "辽宁省沈阳市新民市",
"210200" : "辽宁省大连市",
"210201" : "辽宁省大连市市辖区",
"210202" : "辽宁省大连市中山区",
"210203" : "辽宁省大连市西岗区",
"210204" : "辽宁省大连市沙河口区",
"210211" : "辽宁省大连市甘井子区",
"210212" : "辽宁省大连市旅顺口区",
"210213" : "辽宁省大连市金州区",
"210224" : "辽宁省大连市长海县",
"210281" : "辽宁省大连市瓦房店市",
"210282" : "辽宁省大连市普兰店市",
"210283" : "辽宁省大连市庄河市",
"210300" : "辽宁省鞍山市",
"210301" : "辽宁省鞍山市市辖区",
"210302" : "辽宁省鞍山市铁东区",
"210303" : "辽宁省鞍山市铁西区",
"210304" : "辽宁省鞍山市立山区",
"210311" : "辽宁省鞍山市千山区",
"210321" : "辽宁省鞍山市台安县",
"210323" : "辽宁省鞍山市岫岩满族自治县",
"210381" : "辽宁省鞍山市海城市",
"210400" : "辽宁省抚顺市",
"210401" : "辽宁省抚顺市市辖区",
"210402" : "辽宁省抚顺市新抚区",
"210403" :