日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql校验规则居民身份证号_身份证号规则及校验

發布時間:2024/8/1 数据库 83 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql校验规则居民身份证号_身份证号规则及校验 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

公民身份號碼是特征組合碼,由十七位數字本體碼和一位數字校驗碼組成。

排列順序從左至右依次為:六位數字地址碼,八位數字出生日期碼,三位數字順序碼,最后一位是數字校驗碼。

身份證最后一位是根據前面十七位數字碼,按照ISO 7064:1983.MOD 11-2校驗碼計算出來的檢驗碼。作為尾號的校驗碼,是由號碼編制單位按統一的公式計算出來的,如果某人的尾號是0-9,都不會出現X,但如果尾號是10,那么就得用X來代替,因為如果用10做尾號,那么此人的身份證就變成了19位,而19位的號碼違反了國家標準,并且我國的計算機系統也不承認19位的身份證號碼。Ⅹ是羅馬數字的10,用X來代替10,可以保證公民的身份證符合國家標準。

計算方法

1、將前面的身份證號碼17位數分別乘以不同的系數。從第一位到第十七位的系數分別為:7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2 ;

2、將這17位數字和系數相乘的結果相加;

3、用加出來和除以11,看余數是多少;

4、余數只可能有0 1 2 3 4 5 6 7 8 9 10這11個數字。其分別對應的最后一位身份證的號碼為1 0 X 9 8 7 6 5 4 3 2;

5、通過上面得知如果余數是2,就會在身份證的第18位數字上出現羅馬數字的X。如果余數是10,身份證的最后一位號碼就是2;

例如:某男性的身份證號碼是34052419800101001X。我們要看看這個身份證是不是合法的身份證。

首先:我們計算3*7+4*9+0*10+5*5+...+1*2,前17位的乘積和是189

然后:用189除以11得出的結果是商17余2

最后:通過對應規則就可以知道余數2對應的數字是x。所以,這是一個合格的身份證號碼。

1 //驗證身份證號,成功則返回省份編號+出生日期+性別

2 functionidentifyCard(sId){3 //省份編號

4 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:"國外 "};5

6 //判斷身份證號是否18位

7 if(!/^\d{17}(\d|x)$/i.test(sId))8 return -1;9

10 //將身份證號的x替換成a

11 sId=sId.replace(/x$/i,"a");12

13 //判斷地區編號是否合法

14 if(aCity[parseInt(sId.substr(0,2))]==null)15 return -2; //return "Error:非法地區";

16

17 //判斷出生日期是否合法

18 var sBirthday=sId.substr(6,4)+"-"+Number(sId.substr(10,2))+"-"+Number(sId.substr(12,2)); //如:1986-07-15

19 var d=new Date(sBirthday.replace(/-/g,"/")); //如:1986/07/15

20 if(sBirthday!=(d.getFullYear()+"-"+ (d.getMonth()+1) + "-" +d.getDate()))21 return -3;//return "Error:非法生日";

22

23 //判斷最后一位校驗碼是否正確

24 //身份證號的后四位的前三位是當日出生的順序碼,奇為男,偶為女;

25 //最后一位是校驗碼,由前17位數字乘以指定系數的結果相加,然后除以11,得到余數,這余數對應[1 0 X 9 8 7 6 5 4 3 2]中的數字。如余數是1,那么最終的校驗碼就是0;余數是2,最終校驗碼就是X

26 var iSum = 0;27 for(var i = 17;i>=0;i --)28 iSum += (Math.pow(2,i) % 11) * parseInt(sId.charAt(17 - i),11);29 if(iSum%11!=1)30 return -4; //return "Error:非法證號";

31 birthday = ""+sId.substr(6,4)+Number(sId.substr(10,2))+Number(sId.substr(12,2));32 return ""+parseInt(sId.substr(0,2))+birthday+(sId.substr(16,1)%2?1:2); //"男":"女");

33 }

總結

以上是生活随笔為你收集整理的mysql校验规则居民身份证号_身份证号规则及校验的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。