分享java带来的快乐
我喜欢java新东西
导航
BlogJava
首页
新随笔
联系
聚合
管理
<
2024年11月
>
日
一
二
三
四
五
六
27
28
29
30
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
1
2
3
4
5
6
7
统计
随笔 - 18
文章 - 232
评论 - 106
引用 - 0
常用链接
我的随笔
我的评论
我的参与
最新评论
留言簿
(8)
给我留言
查看公开留言
查看私人留言
文章分类
css 处理技巧(4)
(rss)
Flash(1)
(rss)
flex 技术分类(4)
(rss)
Java(27)
(rss)
jira配置(1)
(rss)
linux 操作系统配置(44)
(rss)
mysql(16)
(rss)
Oracle数据库(38)
(rss)
php(14)
(rss)
ppt 制作
(rss)
Redis(7)
(rss)
sendmail(5)
(rss)
SQLServer(2)
(rss)
web技巧(43)
(rss)
实用工具(19)
(rss)
文章档案
2014年3月 (1)
2014年2月 (1)
2013年11月 (1)
2013年9月 (5)
2013年7月 (1)
2013年5月 (3)
2013年4月 (1)
2013年3月 (3)
2013年1月 (4)
2012年11月 (3)
2012年10月 (4)
2012年9月 (6)
2012年8月 (1)
2012年7月 (3)
2012年6月 (9)
2012年4月 (2)
2012年3月 (1)
2012年2月 (2)
2012年1月 (2)
2011年12月 (2)
2011年11月 (2)
2011年10月 (3)
2011年8月 (3)
2011年7月 (3)
2011年6月 (3)
2011年5月 (9)
2011年4月 (5)
2011年3月 (7)
2011年2月 (6)
2011年1月 (2)
2010年12月 (1)
2010年9月 (4)
2010年8月 (6)
2010年7月 (5)
2010年6月 (1)
2010年3月 (1)
2010年2月 (1)
2010年1月 (4)
2009年12月 (1)
2009年11月 (8)
2009年10月 (2)
2009年9月 (6)
2009年8月 (6)
2009年6月 (1)
2009年4月 (2)
2009年3月 (2)
2009年2月 (3)
2009年1月 (4)
2008年12月 (6)
2008年10月 (2)
2008年9月 (1)
2008年7月 (1)
2008年6月 (1)
2008年5月 (1)
2008年4月 (2)
2008年1月 (2)
2007年12月 (2)
2007年11月 (1)
2007年10月 (3)
2007年8月 (3)
2007年7月 (4)
2007年6月 (6)
2007年5月 (3)
2007年4月 (2)
2007年3月 (3)
2007年2月 (3)
2006年12月 (1)
2006年11月 (3)
2006年10月 (1)
2006年9月 (6)
2006年8月 (5)
2006年6月 (4)
2006年5月 (1)
2006年4月 (2)
2006年3月 (3)
2005年8月 (3)
相册
my daughter
my photo
收藏夹
flex(1)
(rss)
搜索
最新评论
1. re: 邮件发送退信分析大全/SMTP error, RCPT TO: 550 Relay Deny
评论内容较长,点击标题查看
--Jessy
2. re: 邮件发送退信分析大全/SMTP error, RCPT TO: 550 Relay Deny
评论内容较长,点击标题查看
--木子李
3. 请帮忙找出原因[未登录]
评论内容较长,点击标题查看
--阿力
4. re: 邮件发送退信分析大全/SMTP error, RCPT TO: 550 Relay Deny
评论内容较长,点击标题查看
--Joanna 田
5. 退信
评论内容较长,点击标题查看
--刘健
阅读排行榜
1. 主力的控盘原理(804)
2. 江鹏胡温习强(626)
3. commjs(625)
4. 拉高出货有几个特点:(589)
5. flex chart 去水印 flex data visualization trial 亲自用过,很管用(569)
评论排行榜
1. 拉高出货有几个特点:(1)
2. 耐心看--短线介入强势股的技巧(0)
3. 横幅联合(0)
4. 江鹏胡温习强(0)
5. 中国历史朝代歌(0)
js 验证身份证号码
1
、简单的正则表达式:
(
1
)preg_match(
"
/^(/d{18,18}|/d{15,15}|/d{17,17}x)$/
"
,$id_card)
(
2
)preg_match(
"
/^(/d{6})(18|19|20)?(/d{2})([01]/d)([0123]/d)(/d{3})(/d|X)?$/
"
,$id_card)
(
3
)preg_match(
"
/(^/d{15}$/)|(/d{17}(?:/d|x|X)$/),$id_card)
2
、复杂并且严格一些的验证:
//
这个可以验证15位和18位的身份证,并且包含生日和校验位的验证。
//
如果有兴趣,还可以加上身份证所在地的验证,就是前6位有些数字合法有些数字不合法。
function isIdCardNo(num)
{
num
=
num.toUpperCase();
//
身份证号码为15位或者18位,15位时全为数字,18位前17位为数字,最后一位是校验位,可能为数字或字符X。
if
(
!
(
/
(
^
/d{
15
}$)
|
(
^
/d{
17
}([
0
-
9
]
|
X)$)
/
.test(num)))
{
alert(
'
输入的身份证号长度不对,或者号码不符合规定!/n15位号码应全为数字,18位号码末位可以为数字或X。
'
);
return
false
;
}
//
校验位按照ISO 7064:1983.MOD 11-2的规定生成,X可以认为是数字10。
//
下面分别分析出生日期和校验位
var len, re;
len
=
num.length;
if
(len
==
15
)
{
re
=
new
RegExp(
/^
(/d{
6
})(/d{
2
})(/d{
2
})(/d{
2
})(/d{
3
})$
/
);
var arrSplit
=
num.match(re);
//
检查生日日期是否正确
var dtmBirth
=
new
Date(
'
19
'
+
arrSplit[
2
]
+
'
/
'
+
arrSplit[
3
]
+
'
/
'
+
arrSplit[
4
]);
var bGoodDay;
bGoodDay
=
(dtmBirth.getYear()
==
Number(arrSplit[
2
]))
&&
((dtmBirth.getMonth()
+
1
)
==
Number(arrSplit[
3
]))
&&
(dtmBirth.getDate()
==
Number(arrSplit[
4
]));
if
(
!
bGoodDay)
{
alert(
'
输入的身份证号里出生日期不对!
'
);
return
false
;
}
else
{
//
将15位身份证转成18位
//
校验位按照ISO 7064:1983.MOD 11-2的规定生成,X可以认为是数字10。
var arrInt
=
new
Array(
7
,
9
,
10
,
5
,
8
,
4
,
2
,
1
,
6
,
3
,
7
,
9
,
10
,
5
,
8
,
4
,
2
);
var arrCh
=
new
Array(
'
1
'
,
'
0
'
,
'
X
'
,
'
9
'
,
'
8
'
,
'
7
'
,
'
6
'
,
'
5
'
,
'
4
'
,
'
3
'
,
'
2
'
);
var nTemp
=
0
, i;
num
=
num.substr(
0
,
6
)
+
'
19
'
+
num.substr(
6
, num.length
-
6
);
for
(i
=
0
; i
<
17
; i
++
)
{
nTemp
+=
num.substr(i,
1
)
*
arrInt[i];
}
num
+=
arrCh[nTemp
%
11
];
return
num;
}
}
if
(len
==
18
)
{
re
=
new
RegExp(
/^
(/d{
6
})(/d{
4
})(/d{
2
})(/d{
2
})(/d{
3
})([
0
-
9
]
|
X)$
/
);
var arrSplit
=
num.match(re);
//
检查生日日期是否正确
var dtmBirth
=
new
Date(arrSplit[
2
]
+
"
/
"
+
arrSplit[
3
]
+
"
/
"
+
arrSplit[
4
]);
var bGoodDay;
bGoodDay
=
(dtmBirth.getFullYear()
==
Number(arrSplit[
2
]))
&&
((dtmBirth.getMonth()
+
1
)
==
Number(arrSplit[
3
]))
&&
(dtmBirth.getDate()
==
Number(arrSplit[
4
]));
if
(
!
bGoodDay)
{
alert(dtmBirth.getYear());
alert(arrSplit[
2
]);
alert(
'
输入的身份证号里出生日期不对!
'
);
return
false
;
}
else
{
//
检验18位身份证的校验码是否正确。
//
校验位按照ISO 7064:1983.MOD 11-2的规定生成,X可以认为是数字10。
var valnum;
var arrInt
=
new
Array(
7
,
9
,
10
,
5
,
8
,
4
,
2
,
1
,
6
,
3
,
7
,
9
,
10
,
5
,
8
,
4
,
2
);
var arrCh
=
new
Array(
'
1
'
,
'
0
'
,
'
X
'
,
'
9
'
,
'
8
'
,
'
7
'
,
'
6
'
,
'
5
'
,
'
4
'
,
'
3
'
,
'
2
'
);
var nTemp
=
0
, i;
for
(i
=
0
; i
<
17
; i
++
)
{
nTemp
+=
num.substr(i,
1
)
*
arrInt[i];
}
valnum
=
arrCh[nTemp
%
11
];
if
(valnum
!=
num.substr(
17
,
1
))
{
alert(
'
18位身份证的校验码不正确!应该为:
'
+
valnum);
return
false
;
}
return
num;
}
}
return
false
;
}
3
、严格的验证:
<
script
>
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/>
"
);
</
script
>
posted on 2014-03-20 13:26
强强
阅读(240)
评论(0)
编辑
收藏
新用户注册
刷新评论列表
只有注册用户
登录
后才能发表评论。
网站导航:
博客园
IT新闻
知识库
C++博客
博问
管理
Powered by:
BlogJava
Copyright © 强强