[javaScript]身份证号信息解析
之前一直在思考是不是该把工作中一些问题写出来(可能是简单的问题),现在的想法是应该写出来这些简单的问题。虽然工作中可能并没有很多特别难的问题让你去解决,因为公司的招人就是根据你的能力来匹配的嘛。
简单的问题大部分都能从网上找到,比如数字校验的正则表达式、邮箱的校验、网址匹配的正则表达式等等。有时候我们遇到的问题并不是正好跟网上已有的完全一致,比如根据身份证显示出性别、出生年月、年龄的功能有不少,但是根据身份证带出籍贯的功能就不容易找到了。所以简单的问题写成博客也是有一定意义的。
籍贯的对应表:
身份证前两位 | 省份 | 序号 |
---|---|---|
11 | 北京市 | 01 |
12 | 天津市 | 02 |
13 | 河北省 | 03 |
14 | 山西 | 04 |
15 | 内蒙古 | 05 |
21 | 辽宁省 | 06 |
22 | 吉林省 | 07 |
23 | 黑龙江省 | 08 |
31 | 上海市 | 09 |
32 | 江苏省 | 10 |
33 | 浙江省 | 11 |
34 | 安徽省 | 12 |
35 | 福建省 | 13 |
36 | 江西省 | 14 |
37 | 山东省 | 15 |
41 | 河南省 | 16 |
42 | 湖北省 | 17 |
43 | 湖南省 | 18 |
44 | 广东省 | 19 |
45 | 广西壮族自治区 | 20 |
46 | 海南省 | 21 |
50 | 重庆市 | 22 |
51 | 四川省 | 23 |
52 | 贵州省 | 24 |
53 | 云南省 | 25 |
54 | 西藏自治区 | 26 |
61 | 陕西省 | 27 |
62 | 甘肃省 | 28 |
63 | 青海省 | 29 |
64 | 宁夏回族自治区 | 30 |
65 | 新疆维吾尔自治区 | 31 |
省份后面对应的序号是固定的,所以这个问题相当于把身份证号前两位转为后面的序号。实际上就是一个简单的排序问题。
function getLocation(){
//定义数组
var locations=new Array(11,12,13,14,15,21,22,23,31,32,33,34,35,36,37,41,42,43,44,45,46,50,51,52,53,54,61,62,63,64,65);
//取得身份证号前两位
tempLocation=iIdNo.substring(0,2);
//设置是否匹配的flag
var idFlag=false;
var result;
for(var i=0;i<locations.length;i++){
if(tempLocation==locations[i]){
//设置flag为true表示找到了符合的号码
idFlag=true;
if(i<9){
i="0"+(i+1);
}else{
i=(i+1);
}
result=i;
}
}
if(!idFlag){
alert("输入的身份证号码有误!");
return false;
}else return result;
}