使用JavaScript验证身份证的代码如下:
将代码放到JS直接调用即可应用到网页中。
1
<
script
>
2
function
checkIdcard(idcard1){
3
var
idcard
=
document.forms[
0
].elements[idcard1].value;
4
var
Errors
=
new
Array(
5
"
验证通过!
"
,
6
"
身份证号码位数不对!
"
,
7
"
身份证号码出生日期超出范围或含有非法字符!
"
,
8
"
身份证号码校验错误!
"
,
9
"
身份证地区非法!
"
10
);
11
var
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
:
"
国外
"
}
12
13
var
idcard,Y,JYM;
14
var
S,M;
15
var
idcard_array
=
new
Array();
16
idcard_array
=
idcard.split(
""
);
17
/*
地区检验
*/
18
if
(area[parseInt(idcard.substr(
0
,
2
))]
==
null
)
19
{
20
alert(Errors[
4
]);
21
return
false
;
22
}
23
/*
身份号码位数及格式检验
*/
24
switch
(idcard.length){
25
case
15
:
26
if
( (parseInt(idcard.substr(
6
,
2
))
+
1900
)
%
4
==
0
||
((parseInt(idcard.substr(
6
,
2
))
+
1900
)
%
100
==
0
&&
(parseInt(idcard.substr(
6
,
2
))
+
1900
)
%
4
==
0
)){
27
ereg
=/^
[
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
}$
/
;
//
测试出生日期的合法性
28
}
else
{
29
ereg
=/^
[
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
}$
/
;
//
测试出生日期的合法性
30
}
31
if
(ereg.test(idcard)){
32
alert(Errors[
0
]
+
"
15
"
);
33
return
false
;
34
}
35
else
{
36
alert(Errors[
2
]);
37
return
false
;
38
}
39
break
;
40
41
case
18
:
42
//
18位身份号码检测
43
//
出生日期的合法性检查
44
//
闰年月日:((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]))
45
//
平年月日:((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]))
46
if
( parseInt(idcard.substr(
6
,
4
))
%
4
==
0
||
(parseInt(idcard.substr(
6
,
4
))
%
100
==
0
&&
parseInt(idcard.substr(
6
,
4
))
%
4
==
0
)){
47
ereg
=/^
[
1
-
9
][
0
-
9
]{
5
}
19
[
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] $
/
;
//
闰年出生日期的合法性正则表达式
48
}
else
{
49
ereg
=/^
[
1
-
9
][
0
-
9
]{
5
}
19
[
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]$
/
;
//
平年出生日期的合法性正则表达式
50
}
51
if
(ereg.test(idcard)){
//
测试出生日期的合法性
52
//
计算校验位
53
S
=
(parseInt(idcard_array[
0
])
+
parseInt(idcard_array[
10
]))
*
7
54
+
(parseInt(idcard_array[
1
])
+
parseInt(idcard_array[
11
]))
*
9
55
+
(parseInt(idcard_array[
2
])
+
parseInt(idcard_array[
12
]))
*
10
56
+
(parseInt(idcard_array[
3
])
+
parseInt(idcard_array[
13
]))
*
5
57
+
(parseInt(idcard_array[
4
])
+
parseInt(idcard_array[
14
]))
*
8
58
+
(parseInt(idcard_array[
5
])
+
parseInt(idcard_array[
15
]))
*
4
59
+
(parseInt(idcard_array[
6
])
+
parseInt(idcard_array[
16
]))
*
2
60
+
parseInt(idcard_array[
7
])
*
1
61
+
parseInt(idcard_array[
8
])
*
6
62
+
parseInt(idcard_array[
9
])
*
3
;
63
Y
=
S
%
11
;
64
M
=
"
F
"
;
65
JYM
=
"
10X98765432
"
;
66
M
=
JYM.substr(Y,
1
);
/*
判断校验位
*/
67
if
(M
==
idcard_array[
17
]){
68
alert(Errors[
0
]
+
"
18
"
);
69
return
false
;
/*
检测ID的校验位
*/
70
}
71
else
{
72
alert(Errors[
3
]);
73
return
false
;
74
}
75
}
76
else
{
77
alert(Errors[
2
]);
78
return
false
;
79
}
80
break
;
81
82
default
:
83
alert(Errors[
1
]);
84
return
false
;
85
86
}
87
</
script
>