18位身份证号验证

一、了解身份证号18位编码规则, 排列顺序从左至右依次为:

六位数字地址码,八位数字出生日期码,三位数字顺序码,一位数字校验码。

详细:

顺序码的奇数分给男性,偶数分给女性。校验码是根据前面十七位数字码。

前1、2位数字表示:所在省(直辖市、自治区)的代码。

第3、4位数字表示:所在地级市(自治州)的代码。

第5、6位数字表示:所在区(县、自治县、县级市)的代码。

二、验证码校验算法:

算法:对身份证号前17位进行加权求和,加权求和总数对11求余数,然后从表2中找到对应的校验码,对比校验码就可以了。

表1:

i

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

Wi

7

9

10

5

8

4

2

1

6

3

7

9

10

5

8

4

2

i:身份证号从左往右的位数。

Wi:身份证号对应的加权因子。

Ai:身份证号对应的数值。


 (2)余数 = Sum % 11。

 (3)在下表中根据余数找到对应的校验码。

 表2:

余数

0

1

2

3

4

5

6

7

8

9

10

校验码

1

0

X

9

8

7

6

5

4

3

2

这里用javascript实现:

/**
   * 18位身份证号码校验
   */
function  isIdCard(idcard){
    if(!idcard){
      return false;
    }
    if(idcard.length<18){
      return false;
    }
    let len = 17;
    let sum = 0;
    let yzArray = [7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2];
    let codeArray = ['1','0','X','9','8','7','6','5','4','3','2'];
    for(let i=0;i



你可能感兴趣的:(javascript)