先去查一下每个地区的身份证号的前缀(省+市+县+生日(8位或者6位)),再考虑怎么判断吧
解决方案 »
- JQuery中是否有类似于asp.net中仅仅执行一次的函数
- 怎样获取下拉列表中value的值?
- js文件动态导入,项目需要,100分
- 自动显示下拉菜单问题
- url地址栏中传返回地址,后台不能正确读取,怎么处理?
- 还是正则请hbhbhbhbhb1021(天外水火(我要多努力)) 看下
- 怎样获取一个静态html文件里面某个hidden变量的值?
- 关于<Script FOR="player" EVENT="initOK"> 这个语句,大家请看
- 怎么获得输入字符!详细内容如下:
- JS中文字旋转问题
- 关于使用键盘的方向键移动网页上一个无素的问题
- 如何实现表中表格的点击隐藏和再点击打开?望高手指教,谢谢!
<script language=javascript>
var aCity =
{
'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' : "新疆",
'71' : "台湾",
'81' : "香港",
'82' : "澳门",
'91' : "国外"
}
function cidInfo(sId){
var iSum=0
var info=""
if(!/^\d{17}(\d|x)$/i.test(sId))return false;
sId=sId.replace(/x$/i,"a");
if(aCity[parseInt(sId.substr(0,2))]==null)return "Error:非法地区";
sBirthday=sId.substr(6,4)+"-"+Number(sId.substr(10,2))+"-"+Number(sId.substr(12,2));
var d=new Date(sBirthday.replace(/-/g,"/"))
if(sBirthday!=(d.getFullYear()+"-"+ (d.getMonth()+1) + "-" + d.getDate()))return "Error:非法生日";
for(var i = 17;i>=0;i --) iSum += (Math.pow(2,i) % 11) * parseInt(sId.charAt(17 - i),11)
if(iSum%11!=1)return "Error:非法证号";
return aCity[parseInt(sId.substr(0,2))]+","+sBirthday+","+(sId.substr(16,1)%2?"男":"女")
}document.write(cidInfo("380524198002300016"),"<br/>");
document.write(cidInfo("340524198002300019"),"<br/>")
document.write(cidInfo("340524197711111111"),"<br/>")
document.write(cidInfo("34052419800101001x"),"<br/>");
document.write(cidInfo("220283198011200331"),"<br/>");
</script>