关于身份证验证这一点做到身份证的编码有效性,只有是否真实存在,就算有国家居民身份证数据库也不见的真的符合事实,毕竟一人多证,或者有人无证的基本现象是存在的。
做项目中有用到用户身份证验证,那么尽最大努力使用户输入的身份证接近事实,当然只是接近。如果要真极度达到身份证确实真是有效,使用国家居民身份证数据库或者银行卡办卡身份证证件等。
接下来用一段Java代码来实现没有数据库服务提供的时候做身份证验证的示例。
关于我国(中国)大陆居民身份证编码格式和意义参见百度百科(身份证):
http://baike.baidu.com/link?url=tu-0tuMiWOmakcmpFIDHezquZrfc75oPBKS_8g7hD7wiKYfVaV-yxow93fwbiqyE
验证身份证我们要验证那些内容呢?
以1999年7月1日生效的GB11643-1999《公民身份号码》规范为例,18为居民身份证号码。
1.验证身份证号码前6为,省市区县编码
2.验证身份证号码第7-14位,出生年月日,格式yyyyMMdd,注意(以当日为日期截至线,一个身份证的生日还没到,肯定是不中的喽)
3.验证身份证号码第15-17位,出生序列号(补充一点点,就是同一地区同天出生的孩子的编号,男孩的奇数,女孩偶数,号码从小到大排序,老年人预留号码从999往下递减)
4.验证身份证号码第18位,即校验位,1-17位通过一定的算法计算而来值对象的检验位值
验证并不复杂就是考虑周全就行了,下面是Java实现的代码,如果使用JavaScript做前端验证,可以按Java实现的方式很容易的DIY一份JavaScript的实现.
身份证验证类:
下面是省市县区编码:
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
31
32
33
34
35
36
|