私人资料库
本博客大部分技术文章,均从网络搜索得来,旨在收集整理技术资料,文章版权归属原作者,由此引起的任何版权问题,与本人无关。

【转自】http://www.cnblogs.com/kss/archive/2005/12/26/304493.html

 

 1<SCRIPT Language="JavaScript">
 2function checkIDCard (str) 
 3
 4var isIDCard1 = new Object();
 5var isIDCard2 = new Object();
 6
 7//身份证正则表达式(15位) 
 8isIDCard1=/^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$/
 9
10//身份证正则表达式(18位) 
11
12isIDCard2=/^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])((\d{4})|\d{3}[A-Z])$/
13
14//验证身份证,如果正确,提交到reg.asp页面
15if (isIDCard1.test(str)||isIDCard2.test(str))
16{    
17document.forms["form1"].action = "./reg.asp";
18document.forms[0].submit();
19return true;
20}

21alert("请重新输入正确的身份证码!");
22return false;
23
24}
  
25
</SCRIPT>
26<Form name="form1" method=post onSubmit="return checkIDCard(this.User_iden.value)">
27    <input name="User_iden" id="User_iden" size="18">
28    <input type="submit" name="testcall" value="验证身份证号码">
29</Form>

 

 

【转自】http://www.cnblogs.com/xuanye/archive/2007/03/23/685707.html

 

 1//身份证号码校验函数
 2function checkIdcard2(idcard){
 3var Errors=new Array(
 4"验证通过!",
 5"身份证号码位数不对!",
 6"身份证号码出生日期超出范围或含有非法字符!",
 7"身份证号码校验错误!",
 8"身份证地区非法!"
 9);
10var area={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:"国外"} 
11
12var idcard,Y,JYM;
13var S,M;
14var idcard_array = new Array();
15idcard_array = idcard.split("");
16//地区检验
17if(area[parseInt(idcard.substr(0,2))]==null
18{
19alert(Errors[4]);
20return false ; 
21}

22//身份号码位数及格式检验
23switch(idcard.length){
24case 15:
25if ( (parseInt(idcard.substr(6,2))+1900% 4 == 0 || ((parseInt(idcard.substr(6,2))+1900% 100 == 0 && (parseInt(idcard.substr(6,2))+1900% 4 == 0 )){
26ereg=/^[1-9][0-9]{5}[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|[1-2][0-9]))[0-9]{3}$/;//测试出生日期的合法性
27}
 else {
28ereg=/^[1-9][0-9]{5}[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|1[0-9]|2[0-8]))[0-9]{3}$/;//测试出生日期的合法性
29}

30if(ereg.test(idcard)) return true;
31else
32{
33alert(Errors[2]);
34return false
35}
 
36break;
37case 18:
38//18位身份号码检测
39//出生日期的合法性检查 
40//闰年月日:((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|[1-2][0-9]))
41//平年月日:((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|1[0-9]|2[0-8]))
42if ( parseInt(idcard.substr(6,4)) % 4 == 0 || (parseInt(idcard.substr(6,4)) % 100 == 0 && parseInt(idcard.substr(6,4))%4 == 0 )){
43ereg=/^[1-9][0-9]{5}(19|20)[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|[1-2][0-9]))[0-9]{3}[0-9Xx]$/;//闰年出生日期的合法性正则表达式
44}
 else {
45ereg=/^[1-9][0-9]{5}(19|20)[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|1[0-9]|2[0-8]))[0-9]{3}[0-9Xx]$/;//平年出生日期的合法性正则表达式
46}

47if(ereg.test(idcard)){//测试出生日期的合法性
48//计算校验位
49= (parseInt(idcard_array[0]) + parseInt(idcard_array[10])) * 7
50+ (parseInt(idcard_array[1]) + parseInt(idcard_array[11])) * 9
51+ (parseInt(idcard_array[2]) + parseInt(idcard_array[12])) * 10
52+ (parseInt(idcard_array[3]) + parseInt(idcard_array[13])) * 5
53+ (parseInt(idcard_array[4]) + parseInt(idcard_array[14])) * 8
54+ (parseInt(idcard_array[5]) + parseInt(idcard_array[15])) * 4
55+ (parseInt(idcard_array[6]) + parseInt(idcard_array[16])) * 2
56+ parseInt(idcard_array[7]) * 1 
57+ parseInt(idcard_array[8]) * 6
58+ parseInt(idcard_array[9]) * 3 ;
59= S % 11;
60= "F";
61JYM = "10X98765432";
62= JYM.substr(Y,1);//判断校验位
63if(M == idcard_array[17]) return true//检测ID的校验位
64else
65{ alert(Errors[3]);
66return false;
67}

68}

69else 
70{
71alert(Errors[2]);
72return false
73}

74break;
75default:
76alert(Errors[1]);
77return false ; 
78break;
79}

80}

81

 

 

posted on 2009-02-08 01:12  该显示名称已被其他用户使用  阅读(1326)  评论(0)    收藏  举报