我写了一个验证身份证号码的程序,它是以一定内存空间(大概100M)换取cpu消耗,然后它的运算量就降低了,前十四位的验证就相当于转换类型再查表一样,所以它的验证号码速度比一般的方式快。如果还不明白就说明你写框架写多了,或者你不了解java基础。测试结果只代表算法效率,测一个号码是因为正确号码运算次数基本相同,如果你们用自己的电脑测,13亿次循环应该不到1分钟。这种设计思路,也可以套用其他格式信息验证上去。

先说一下具体思路:首先,身份证号的前6位是全国行政区划代码(就是省市县连起来的代码),我就把国家统计局的2004-2013年的全部代码拿过来,用程序分析,除掉五六位为00的,总共3000+,为了以尽量少的方式存放在代码里,我就用程序分析出每个不间断的序列,首尾成对地存放在数组里面,如110111,110118 表示110111到1101117,然后用布尔数组存储到对应下标,有这个代码,对应下标为true。然后年月日也是这个原理,先用循环生成所有的日期的可能性然后把值减去19000101(就是上一个百年虫日期),用样存放到布尔数组里面。最后验证校验码以及前17位是否为数字,18位是否为数字或者X。

再说一下身份证校验码,第18位的校验方法: 
(1)十七位数字本体码加权求和
公式 S = Sum(Ai * Wi), i = 0, ... , 16 ,先对前17位数字的权求和
      Ai:表示第i位置上的身份证号码数字值 
      Wi:表示第i位置上的加权因子 
      Wi: 7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2
(2)计算模 Y = mod(S, 11) 
(3)通过模得到对应的校验码 
      Y: 0 1 2 3 4 5 6 7 8 9 10 
校验码: 1 0 X 9 8 7 6 5 4 3 2
这个用循环就能做到了。
      另外,用switch-case语句比if-esle快,这大概都知道吧。
      然后说一下数据查询效率,方式有:数组位图(array),BitSet,二分法,HashSet
      查询时间:array≈bitSet <二分法 <HashSet
空间消耗:bitSet>array >二分法 >HashSet
     所以我用array存储数据做查询,然后运行效率大概就是 在i3本子上面100秒查完全国人民的身份证号码。
     今天把循环去掉,换成最基本的运算式子,结果为80秒执行完13亿次验证,但是越高效的代码越不人性化。
     请不要讨论连接公安网数据库问题,因为这个程序起的作用是高速过滤器,验证通过再查询数据库,不通过就滤掉了。更不要说查询一次数据库比几十次整点运算快,它们是两个层面的,如果硬要比的话,对于一个身份证号码来说,查询数据库肯定比cpu运行几十次整点运算慢的多,而且差几个数量级

1. [代码]IdCardValidator.java

?
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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
/**
 * @Company asiainfo-linkage
 * @author WANGDENG
 */
public class IdCardValidator {
    private static final IdCardValidator VALIDATOR=new IdCardValidator(); //单例常量
    private static final boolean[] regions=new boolean[659005];//存放所有省市县数据
    private static final boolean[] dates = new boolean[20141231-19000100];//存放1900年至2014年12月31日日期数据
    private static final String verifyLastData="10X98765432";//最后一位校验成功对应字符的序列
    private static final int[] last=new int[41];// 身份证最后一位号码校验
//  private static final int[] WI = { 7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10,5, 8, 4, 2 };//最后一位校验因子
    public static IdCardValidator getInstance(){//返回单例
        return VALIDATOR;
    }
     
    /**
     * 用于生成某年某月对应天数
     * @param year
     * @param month
     * @return
     */
    private static  int daysInMonth(int year, int month) {
        int daysInMonth;
        switch (month) {
            case 1: case 3: case 5:
            case 7: case 8: case 10:
            case 12:
                daysInMonth = 31;
                break;
            case 2:
                if (((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0)) {//闰年
                    daysInMonth = 29;
                } else {
                    daysInMonth = 28;
                }
                break;
            default:
                daysInMonth = 30;
        }
        return daysInMonth;
    }
    /**
     * 重载方法,用于校验带性别信息的身份证号码
     * @param idCard
     * @param isMale
     * @return
     */
    public boolean isValid(String idCard,boolean isMale){
        return isValid(idCard)&&(idCard.charAt(16)%2==0^isMale);
    }
    /**
     * 校验身份证号码的方法,这个看不懂看下面注释掉的,原理一样。
     * @param idCard
     * @return
     *  校验因子为:{ 7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10,5, 8, 4, 2 };
     */
    public boolean isValid(String idCard) {
        if (null == idCard || idCard.length() != 18)
            return false; // 验证长度
        int  sum = 0, regionCode = 0, dateCode = 0;
        char[] arr = idCard.toCharArray();
        //计算与校验码对应的值'0'对应ASCII值为48,校验因子总和100.
        sum = arr[0] * 7 + arr[1] * 9 + arr[2] * 10 + arr[3] * 5
            + arr[4] * 8 + arr[5] * 4 + arr[6] * 2  + arr[7] * 1
            + arr[8] * 6 + arr[9] * 3 + arr[10]* 7 +  arr[11] * 9
            + arr[12]*10 + arr[13]* 5+  arr[14]* 8 +  arr[15] * 4
            + arr[16] * 2 - 4800;
        //验证前17位为数字,第18位为X或数字
        if (arr[0] > 57 || arr[1]  > 57  || arr[2]  > 57 || arr[3]  > 57
        || arr[4]  > 57 || arr[5]  > 57  || arr[6]  > 57 || arr[7]  > 57
        || arr[8]  > 57 || arr[9]  > 57  || arr[10] > 57 || arr[11] > 57
        || arr[12] > 57 || arr[13] > 57  || arr[14] > 57 || arr[15] > 57
        || arr[16] > 57 || arr[0]  < 48  || arr[1]  < 48 || arr[2]  < 48
        || arr[3]  < 48 || arr[4]  < 48  || arr[5]  < 48 || arr[6]  < 48
        || arr[7]  < 48 || arr[8]  < 48  || arr[9]  < 48 || arr[10] < 48
        || arr[11] < 48 || arr[12] < 48  || arr[13] < 48 || arr[14] < 48
        || arr[15] < 48 || arr[16] < 48    ||(arr[17]< 88  && arr[17] > 57)
        || arr[17] < 48  || arr[17] > 88)
            return false;
        // 验证第18位校验码
        if (sum % 11 != last[arr[17] - 48])
            return false;
        //获取省市县片段,5333328=111111*48
        regionCode = arr[0] * 100000 + arr[1] * 10000 + arr[2] * 1000
                   + arr[3] * 100    + arr[4] * 10    + arr[5]-5333328;
        //获取日期片段   552333429=11111111*48+19000101
        dateCode =   arr[6] * 10000000 + arr[7] * 1000000 + arr[8] * 100000
                   + arr[9] * 10000   + arr[10] * 1000    + arr[11] * 100
                   + arr[12]* 10     + arr[13]-552333429;
        return regions[regionCode]&&dates[dateCode];//最后校验省市县和日期
    }
//  public boolean isValid(String idCard){
//      if (null == idCard || idCard.length() != 18)return false;       //验证长度
//      int a = 0, sum = 0,regionCode=0,dateCode=0;
//      char[] arr=idCard.toCharArray();
//      for (int i = 0; i < 17; i++) {
//          a = arr[i] - 48;if (a >10 || a < 0)return false;  //验证前17位为数字
//          sum =sum+ WI[i] * a;                                //计算校验值
//          switch(i){
//          case 0:case 1:case 2:case 3:case 4:                 //快速找到对应条件
//          case 5:regionCode=regionCode*10+a;break;            //获取省市县片段
//          case 6:case 7:case 8:case 9:case 10:
//          case 11:case 12:case 13:dateCode=dateCode*10+a;break;//获取日期片段
//          default: break;
//          }
//      }
//      a = arr[17]-48;                             //获取第18为数字
//      if(sum % 11!=last[a])return false;          // 验证第18位校验码
//      if (!(a==40||a < 10 && a > 0))return false;   // 验证第18位为数字或X
//      return regions[regionCode]&&dates[dateCode-19000101];//最后校验省市县和日期          
//  }
    public static void main(String[] args) {//测试
        long t1=System.currentTimeMillis();
        for(int i=0;i<1300000000;i++)
        IdCardValidator.getInstance().isValid("36062219800101325X");
        long t2=System.currentTimeMillis();
        System.out.println("方法耗时"+(t2-t1)/1000+"秒");
    }
    static {
        for(int j=0,len=verifyLastData.length();j<len;j++)last[verifyLastData.charAt(j)-48]= j;
        for (int year = 1900; year < 2015; year++) {//日期数据加载
            for (int month = 1; month <= 12; month++) {
                for (int day = 1; day <= daysInMonth(year, month); day++) {
                    dates[year*10000+month*100+day-19000101]=true;
                }
            }
        }
        int[] regionArray={//省市县压缩后数据
                110101,110110,110111,110118,110228,110230,120101,120117,
                120221,120222,120223,120224,120225,120226,130101,130106,130107,130109,
                130121,130122,130123,130134,130181,130186,130201,130206,130207,130210,
                130223,130226,130227,130228,130229,130231,130281,130282,130283,130284,
                130301,130305,130321,130325,130401,130405,130406,130407,130421,130422,
                130423,130436,130481,130482,130501,130504,130521,130536,130581,130583,
                130601,130605,130621,130639,130681,130685,130701,130704,130705,130707,
                130721,130734,130801,130805,130821,130829,130901,130904,130921,130931,
                130981,130985,131001,131004,131022,131027,131028,131029,131081,131083,
                131101,131103,131121,131129,131181,131183,140101,140102,140105,140111,
                140121,140124,140181,140182,140201,140204,140211,140213,140221,140228,
                140301,140304,140311,140312,140321,140323,140401,140403,140411,140412,
                140421,140422,140423,140432,140481,140482,140501,140503,140521,140523,
                140524,140526,140581,140582,140601,140604,140621,140625,140701,140703,
                140721,140730,140781,140782,140801,140803,140821,140831,140881,140883,
                140901,140903,140921,140933,140981,140982,141001,141003,141021,141035,
                141081,141083,141101,141103,141121,141131,141181,141183,150101,150106,
                150121,150126,150201,150208,150221,150224,150301,150305,150401,150405,
                150421,150427,150428,150431,150501,150503,150521,150527,150581,150582,
                150601,150603,150621,150628,150701,150703,150721,150728,150781,150786,
                150801,150803,150821,150827,150901,150903,150921,150930,150981,150982,
                152201,152203,152221,152225,152501,152503,152522,152532,152921,152924,
                210101,210107,210111,210115,210122,210125,210181,210182,210201,210205,
                210211,210214,210224,210225,210281,210284,210301,210305,210311,210312,
                210321,210322,210323,210324,210381,210382,210401,210405,210411,210412,
                210421,210424,210501,210506,210521,210523,210601,210605,210624,210625,
                210681,210683,210701,210704,210711,210712,210726,210728,210781,210783,
                210801,210805,210811,210812,210881,210883,210901,210906,210911,210912,
                210921,210923,211001,211006,211011,211012,211021,211022,211081,211082,
                211101,211104,211121,211123,211201,211203,211204,211205,211221,211222,
                211223,211225,211281,211283,211301,211304,211321,211323,211324,211325,
                211381,211383,211401,211405,211421,211423,211481,211482,220101,220107,
                220112,220113,220122,220123,220181,220184,220201,220205,220211,220212,
                220221,220222,220281,220285,220301,220304,220322,220324,220381,220383,
                220401,220404,220421,220423,220501,220504,220521,220522,220523,220525,
                220581,220583,220601,220603,220604,220606,220621,220624,220625,220626,
                220681,220682,220701,220703,220721,220725,220801,220803,220821,220823,
                220881,220883,222401,222407,222424,222425,222426,222427,230101,230105,
                230106,230113,230123,230130,230181,230185,230201,230209,230221,230222,
                230223,230226,230227,230228,230229,230232,230281,230282,230301,230308,
                230321,230322,230381,230383,230401,230408,230421,230423,230501,230504,
                230505,230507,230521,230525,230601,230607,230621,230625,230701,230717,
                230722,230723,230781,230782,230801,230806,230811,230812,230822,230823,
                230826,230827,230828,230829,230833,230834,230881,230883,230901,230905,
                230921,230922,231001,231006,231024,231026,231081,231082,231083,231086,
                231101,231103,231121,231122,231123,231125,231181,231183,231201,231203,
                231221,231227,231281,231284,232701,232705,232721,232724,310101,310102,
                310103,310111,310112,310121,310230,310231,320101,320108,320111,320112,
                320113,320117,320124,320126,320201,320207,320211,320212,320281,320283,
                320301,320306,320311,320313,320321,320325,320381,320383,320401,320403,
                320404,320406,320411,320413,320481,320483,320501,320510,320581,320586,
                320601,320603,320611,320613,320621,320622,320623,320624,320681,320685,
                320701,320702,320703,320704,320705,320707,320721,320725,320801,320805,
                320811,320812,320826,320827,320829,320832,320901,320904,320921,320926,
                320981,320983,321001,321004,321011,321013,321023,321024,321081,321082,
                321084,321085,321088,321089,321101,321103,321111,321113,321181,321184,
                321201,321204,321281,321285,321301,321303,321311,321312,321322,321325,
                330101,330107,330108,330111,330122,330123,330127,330128,330182,330184,
                330185,330186,330201,330202,330203,330207,330211,330213,330225,330227,
                330281,330284,330301,330305,330322,330323,330324,330325,330326,330330,
                330381,330383,330401,330403,330411,330412,330421,330422,330424,330425,
                330481,330484,330501,330504,330521,330524,330601,330603,330621,330622,
                330624,330625,330681,330684,330701,330704,330723,330724,330726,330728,
                330781,330785,330801,330804,330822,330823,330824,330826,330881,330882,
                330901,330904,330921,330923,331001,331005,331021,331025,331081,331083,
                331101,331103,331121,331128,331181,331182,340101,340105,340111,340112,
                340121,340125,340181,340182,340201,340205,340207,340209,340221,340224,
                340225,340226,340301,340305,340311,340312,340321,340324,340401,340407,
                340421,340422,340501,340505,340506,340507,340521,340524,340601,340605,
                340621,340622,340701,340704,340711,340712,340721,340722,340801,340804,
                340811,340812,340822,340829,340881,340882,341001,341005,341021,341025,
                341101,341104,341122,341123,341124,341127,341181,341183,341201,341205,
                341221,341223,341225,341227,341282,341283,341301,341303,341321,341325,
                341401,341403,341421,341425,341501,341504,341521,341526,341601,341603,
                341621,341624,341701,341703,341721,341724,341801,341803,341821,341826,
                341881,341882,350101,350106,350111,350112,350121,350126,350128,350129,
                350181,350183,350201,350202,350203,350204,350205,350207,350211,350214,
                350301,350306,350322,350323,350401,350404,350421,350422,350423,350431,
                350481,350482,350501,350506,350521,350522,350524,350528,350581,350584,
                350601,350604,350622,350630,350681,350682,350701,350703,350721,350726,
                350781,350785,350801,350803,350821,350826,350881,350882,350901,350903,
                350921,350927,350981,350983,360101,360106,360111,360112,360121,360125,
                360201,360204,360222,360223,360281,360282,360301,360303,360313,360314,
                360321,360324,360401,360404,360421,360422,360423,360431,360481,360483,
                360501,360503,360521,360522,360601,360603,360622,360623,360681,360682,
                360701,360703,360721,360736,360781,360783,360801,360804,360821,360831,
                360881,360882,360901,360903,360921,360927,360981,360984,361001,361003,
                361021,361031,361101,361103,361121,361131,361181,361182,370101,370106,
                370112,370114,370124,370127,370181,370182,370201,370204,370205,370206,
                370211,370215,370281,370286,370301,370307,370321,370324,370401,370407,
                370481,370482,370501,370504,370521,370524,370601,370603,370611,370614,
                370634,370635,370681,370688,370701,370706,370724,370726,370781,370787,
                370801,370803,370811,370812,370826,370833,370881,370884,370901,370904,
                370911,370912,370921,370922,370923,370924,370982,370984,371001,371003,
                371081,371084,371101,371104,371121,371123,371201,371204,371301,371303,
                371311,371313,371321,371330,371401,371403,371421,371429,371481,371483,
                371501,371503,371521,371527,371581,371582,371601,371603,371621,371627,
                371701,371703,371721,371729,410101,410107,410108,410109,410122,410123,
                410181,410186,410201,410206,410211,410212,410221,410226,410301,410308,
                410311,410312,410322,410330,410381,410382,410401,410405,410411,410412,
                410421,410424,410425,410426,410481,410483,410501,410504,410505,410507,
                410522,410524,410526,410528,410581,410582,410601,410604,410611,410612,
                410621,410623,410701,410705,410711,410712,410721,410722,410724,410729,
                410781,410783,410801,410805,410811,410812,410821,410824,410825,410826,
                410881,410884,410901,410903,410922,410924,410926,410929,411001,411003,
                411023,411026,411081,411083,411101,411105,411121,411123,411201,411203,
                411221,411223,411224,411225,411281,411283,411301,411304,411321,411331,
                411381,411382,411401,411404,411421,411427,411481,411482,411501,411504,
                411521,411529,411601,411603,411621,411629,411681,411682,411701,411703,
                411721,411730,419001,419002,420101,420108,420111,420118,420201,420206,
                420222,420223,420281,420282,420301,420304,420321,420326,420381,420382,
                420501,420507,420525,420530,420581,420584,420601,420603,420606,420608,
                420624,420627,420682,420685,420701,420705,420801,420803,420804,420805,
                420821,420823,420881,420882,420901,420903,420921,420924,420981,420983,
                420984,420985,421001,421004,421022,421025,421081,421082,421083,421084,
                421087,421088,421101,421103,421121,421128,421181,421183,421201,421203,
                421221,421225,421281,421282,421301,421304,421321,421322,421381,421382,
                422801,422803,422822,422824,422825,422829,429004,429007,429021,429022,
                430101,430106,430111,430113,430121,430123,430124,430125,430181,430182,
                430201,430205,430211,430212,430221,430222,430223,430226,430281,430282,
                430301,430303,430304,430305,430321,430322,430381,430383,430401,430402,
                430405,430409,430412,430413,430421,430425,430426,430427,430481,430483,
                430501,430504,430511,430512,430521,430526,430527,430530,430581,430582,
                430601,430604,430611,430612,430621,430622,430623,430625,430626,430627,
                430681,430683,430701,430704,430721,430727,430781,430782,430801,430803,
                430811,430812,430821,430823,430901,430904,430921,430924,430981,430982,
                431001,431004,431021,431029,431081,431082,431101,431104,431121,431130,
                431201,431203,431221,431231,431281,431282,431301,431303,431321,431323,
                431381,431383,433101,433102,433122,433128,433130,433131,440101,440108,
                440111,440117,440183,440185,440201,440202,440203,440206,440222,440223,
                440224,440225,440229,440230,440232,440234,440281,440283,440301,440302,
                440303,440309,440401,440405,440501,440502,440507,440508,440511,440516,
                440523,440524,440601,440602,440604,440609,440701,440702,440703,440706,
                440781,440782,440783,440786,440801,440805,440811,440812,440823,440824,
                440825,440826,440881,440884,440901,440904,440923,440924,440981,440984,
                441201,441204,441223,441227,441283,441285,441301,441304,441322,441325,
                441401,441403,441421,441425,441426,441428,441481,441482,441501,441503,
                441521,441522,441523,441524,441581,441582,441601,441603,441621,441626,
                441701,441703,441721,441722,441723,441724,441781,441782,441801,441803,
                441821,441822,441823,441824,441825,441828,441881,441883,445101,445103,
                445121,445123,445201,445203,445221,445223,445224,445225,445281,445282,
                445301,445303,445321,445324,445381,445382,450101,450104,450105,450106,
                450107,450110,450122,450128,450201,450206,450221,450227,450301,450306,
                450311,450312,450321,450333,450401,450402,450403,450406,450421,450424,
                450481,450482,450501,450504,450512,450513,450521,450522,450601,450604,
                450621,450622,450681,450682,450701,450704,450721,450723,450801,450805,
                450821,450822,450881,450882,450901,450903,450921,450925,450981,450982,
                451001,451003,451021,451032,451101,451103,451121,451124,451201,451203,
                451221,451230,451281,451282,451301,451303,451321,451325,451381,451382,
                451401,451403,451421,451426,451481,451482,460101,460102,460105,460109,
                460201,460202,460321,460324,469001,469004,469005,469008,469021,469040,
                500101,500120,500222,500239,500240,500244,500381,500385,510101,510102,
                510104,510109,510112,510116,510121,510123,510124,510125,510129,510130,
                510131,510133,510181,510185,510301,510305,510311,510312,510321,510323,
                510401,510404,510411,510412,510421,510423,510501,510505,510521,510523,
                510524,510526,510601,510602,510603,510604,510623,510624,510626,510627,
                510681,510684,510701,510702,510703,510705,510722,510728,510781,510782,
                510801,510803,510811,510813,510821,510825,510901,510902,510903,510905,
                510921,510924,511001,511003,511011,511012,511024,511026,511028,511029,
                511101,511103,511111,511114,511123,511125,511126,511127,511129,511130,
                511132,511134,511181,511182,511301,511305,511321,511326,511381,511382,
                511401,511403,511421,511426,511501,511504,511521,511530,511601,511603,
                511621,511624,511681,511682,511701,511703,511721,511726,511781,511782,
                511801,511804,511821,511828,511901,511903,511921,511924,512001,512003,
                512021,512023,512081,512082,513221,513234,513321,513339,513401,513402,
                513422,513438,520101,520104,520111,520115,520121,520124,520181,520182,
                520201,520202,520203,520204,520221,520223,520301,520304,520321,520331,
                520381,520383,520401,520403,520421,520426,520501,520503,520521,520528,
                520601,520604,520621,520629,522201,522202,522222,522231,522301,522302,
                522322,522329,522401,522402,522422,522429,522601,522602,522622,522637,
                522701,522703,522722,522724,522725,522733,530101,530104,530111,530115,
                530121,530123,530124,530130,530181,530182,530301,530303,530321,530327,
                530328,530329,530381,530382,530401,530403,530421,530429,530501,530503,
                530521,530525,530601,530603,530621,530631,530701,530703,530721,530725,
                530801,530803,530821,530830,530901,530903,530921,530928,532301,532302,
                532322,532330,532331,532332,532501,532504,532522,532533,532601,532602,
                532621,532629,532801,532802,532822,532824,532901,532902,532922,532933,
                533102,533104,533122,533125,533321,533322,533323,533326,533421,533424,
                540101,540103,540121,540128,542121,542130,542132,542134,542221,542230,
                542231,542234,542301,542302,542322,542339,542421,542431,542521,542528,
                542621,542628,610101,610105,610111,610117,610122,610123,610124,610127,
                610201,610205,610222,610223,610301,610305,610322,610325,610326,610332,
                610401,610405,610422,610432,610481,610482,610501,610503,610521,610529,
                610581,610583,610601,610603,610621,610633,610701,610703,610721,610731,
                610801,610803,610821,610832,610901,610903,610921,610930,611001,611003,
                611021,611027,620101,620106,620111,620112,620121,620124,620201,620202,
                620301,620303,620321,620322,620401,620404,620421,620424,620501,620504,
                620521,620526,620601,620603,620621,620624,620701,620703,620721,620726,
                620801,620803,620821,620827,620901,620903,620921,620925,620981,620983,
                621001,621003,621021,621028,621101,621103,621121,621127,621201,621203,
                621221,621229,622901,622902,622921,622928,623001,623002,623021,623028,
                630101,630106,630121,630124,632121,632124,632126,632129,632221,632225,
                632321,632325,632521,632526,632621,632627,632721,632727,632801,632803,
                632821,632824,640101,640102,640104,640107,640121,640123,640181,640182,
                640201,640203,640205,640206,640221,640222,640301,640304,640323,640325,
                640381,640382,640401,640403,640422,640426,640501,640503,640521,640523,
                650101,650110,650121,650122,650201,650206,652101,652102,652122,652124,
                652201,652202,652222,652224,652301,652304,652323,652326,652327,652329,
                652701,652702,652722,652724,652801,652802,652822,652830,652901,652902,
                652922,652930,653001,653002,653022,653025,653101,653102,653121,653132,
                653201,653202,653221,653228,654002,654004,654021,654029,654201,654203,
                654221,654222,654223,654227,654301,654302,654321,654327,659001,659005};
        for(int i=0,len=regionArray.length/2;i<len;i++){
            for(int j=regionArray[2*i];j<regionArray[2*i+1];j++)//压缩的省市县数据解压
                regions[j]=true;
        }
    }
}

2. [图片] IdCardValid.JPG

80秒验证13亿个身份证号码,包含省市县验证相关推荐

  1. 身份证号码的规则及验证原理

     身份证号码的规则及验证原理 [身份证号码的规则] 1.15位身份证号码组成: ddddddyymmddxxs共15位,其中: dddddd为6位的地方代码,根据这6位可以获得该身份证号所在地. ...

  2. JavaScript+Regex 身份证号码的正则表达式及验证详解

    简言 在做用户实名验证时,常会用到身份证号码的正则表达式及校验方案.本文列举了两种验证方案,大家可以根据自己的项目实际情况,选择适合的方案. 身份证号码说明 居民身份证号码,正确.正式的称谓应该是&q ...

  3. 前端js身份证号码和手机号码格式验证

    //手机号码验证 function phoneNO(num) {return /^1[3|4|5|6|7|8|9][0-9]\d{8}$/.test(num); return /^(https?|ft ...

  4. 18位身份证号码规则及js验证

    2019独角兽企业重金招聘Python工程师标准>>> 一.中国居民身份证号码规则 18位身份证号码编码规则:根据[中华人民共和国国家标准 GB 11643-1999]中有关公民身份 ...

  5. 身份证号码的正则表达式及验证详解(JavaScript,Regex)

    2019独角兽企业重金招聘Python工程师标准>>> 简言 在做用户实名验证时,常会用到身份证号码的正则表达式及校验方案.本文列举了两种验证方案,大家可以根据自己的项目实际情况,选 ...

  6. js正则表达式 - 验证11位手机号码、邮箱验证、18位身份证号码

    正则解析 11位手机号码 reg表达式:/^[1][3,4,5,7,8][0-9]{9}$/ 规则:第一个数字1,第二个数字只能是3,4,5,7,8中的某一个,剩下的号码需要有9个数,范围在0-9之间 ...

  7. Thinkphp使用Validate里的正则表达式验证中文名字和身份证号码

    众所周知,javascript里验证中文的正则表达式如下: var name = $("input[name='name']").val();var regex=/^[\u4E00 ...

  8. Jquery 对 身份证号码的验证 (15/18位)

    //欢迎验证.给予指正错误,从好多地方查来的资料修改的...已用本人身份证验证... 由于以前修改的问题无法验证带 X 的身份证号码,已修复!//为值添加0function Append_zore(t ...

  9. 前端对用户身份证号码进行验证以及模糊显示

    一. 需求 后台管理系统项目,展示用户传入身份证号码.现需要验证用户输入的身份证号码的真实性,以及对身份证号码进行模糊显示. 二. 代码验证 2.1 验证身份证号码的真实性 参考的这篇文章:https ...

最新文章

  1. Python 第十五天 串讲
  2. Liststring[] 如何去重
  3. 闭包(匿名函数) php
  4. Gym - 101102C
  5. Strange Memory Gym - 102832F
  6. 动态代理JDK于cglib
  7. 代码 抠图_3 行 Python 代码 5 秒抠图的 AI 神器,根本无需 PS,附教程
  8. 用 Python 爬虫框架 Scrapy 爬取心目中的女神
  9. pyqt5 捕获异常确保程序不退出_Python异常处理详解(基础篇十一)
  10. Flink的waterMark概念解释
  11. android使用FFmpeg解码MP4中的音频并使用AudioTrack播放
  12. 凸优化第二章凸集 2.3 保凸运算
  13. linux脚本下载,linux_脚本编写基础
  14. Vim插件(三) Terminal 终端
  15. 《我的青春谁做主》经典搞笑台词
  16. 7-6 统计大写辅音字母
  17. S32V234专业级AVM全景+ADAS解决方案
  18. 小白看了这个也能将自己的网站优化到百度排名第一
  19. windows关闭445、3389端口
  20. Python中sub()用法

热门文章

  1. TIM定时器_CNT_ARR_PSC_CRR
  2. UR机器人TCP通讯示例 详细例程,手把手教会你
  3. Python如何把字典写入到CSV文件
  4. 性能服务器电路,【干货分享】服务器Power电路设计(上)
  5. 第10章两个独立样本的t检验
  6. 使用Apache搭建网站
  7. EDA虚拟机分享2020版本(Synopsys2020)
  8. 程序员为什么越老越贬值?!
  9. 计算机系统中处理的信息是什么,《深入理解计算机系统》第二章 信息的表示和处理...
  10. ceph存储 ceph集群Paxos算法实现