亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

javascript驗證身份證號

2019-11-20 13:02:54
字體:
來源:轉載
供稿:網友

我們在做互聯網網站時,注冊個人資料時,經常要用到身份證號,我們需要對身份證進驗證,不然別人隨便輸個號碼就通過,讓你感覺這個網站做得很shit。

身份證號是有規則的。

結構和形式

  1.號碼的結構
  公民身份號碼是特征組合碼,由十七位數字本體碼和一位校驗碼組成。排列順序從左至右依次為:六位數字地址碼,八位數字出生日期碼,三位數字順序碼和一位數字校驗碼。
  2.地址碼
  表示編碼對象常住戶口所在縣(市、旗、區)的行政區劃代碼,按GB/T2260的規定執行。
  3.出生日期碼
  表示編碼對象出生的年、月、日,按GB/T7408的規定執行,年、月、日代碼之間不用分隔符。
  4.順序碼
  表示在同一地址碼所標識的區域范圍內,對同年、同月、同日出生的人編定的順序號,順序碼的奇數分配給男性,偶數分配給女性。
  5.校驗碼
  根據前面十七位數字碼,按照ISO 7064:1983.MOD 11-2校驗碼計算出來的檢驗碼。
計算方法

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、通過上面得知如果余數是3,就會在身份證的第18位數字上出現的是9。如果對應的數字是2,身份證的最后一位號碼就是羅馬數字x。
例如:某男性的身份證號碼為【53010219200508011x】, 我們看看這個身份證是不是合法的身份證。
首先我們得出前17位的乘積和【(5*7)+(3*9)+(0*10)+(1*5)+(0*8)+(2*4)+(1*2)+(9*1)+(2*6)+(0*3)+(0*7)+(5*9)+(0*10)+(8*5)+(0*8)+(1*4)+(1*2)】是189,然后用189除以11得出的結果是189/11=17----2,也就是說其余數是2。最后通過對應規則就可以知道余數2對應的檢驗碼是X。所以,可以判定這是一個正確的身份證號碼。
以上摘自百度百科。

這個是網上找到的相關資料圖片。

根據已知的資料,我們可以把這個方法的內部實現用js寫出來。前17位驗證比較容易實現,我就不多說了,重點講下最后一位的校驗碼。

復制代碼 代碼如下:

 // 身份證號驗證
 function isIdCard(cardid) {
     //身份證正則表達式(18位)
     var isIdCard2 = /^[1-9]/d{5}(19/d{2}|[2-9]/d{3})((0/d)|(1[0-2]))(([0|1|2]/d)|3[0-1])(/d{4}|/d{3}X)$/i;
     var stard = "10X98765432"; //最后一位身份證的號碼
     var first = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2]; //1-17系數
     var sum = 0;
     if (!isIdCard2.test(cardid)) {
         return false;
     }
     var year = cardid.substr(6, 4);
     var month = cardid.substr(10, 2);
     var day = cardid.substr(12, 2);
     var birthday = cardid.substr(6, 8);
     if (birthday != dateToString(new Date(year + '/' + month + '/' + day))) { //校驗日期是否合法
         return false;
     }
     for (var i = 0; i < cardid.length - 1; i++) {
         sum += cardid[i] * first[i];
     }
     var result = sum % 11;
     var last = stard[result]; //計算出來的最后一位身份證號碼
     if (cardid[cardid.length - 1].toUpperCase() == last) {
         return true;
     } else {
         return false;
     }
 }
 //日期轉字符串 返回日期格式20080808
 function dateToString(date) {
     if (date instanceof Date) {
         var year = date.getFullYear();
         var month = date.getMonth() + 1;
         month = month < 10 ? '0' + month: month;
         var day = date.getDate();
         day = day < 10 ? '0' + day: day;
         return year + month + day;
     }
     return '';
 }

這里只驗證18位身份證,15位的一代身份證不能使用了。

這里還驗證了日期的合法性,如0230,0431等非法日期,驗證是不會通過的。

我們還可以將這個方法加到jquery validate中,方便驗證使用。

寫個自定義jquery validate校驗方法

復制代碼 代碼如下:

// 身份證號驗證 
jQuery.validator.addMethod("isIdCard",
function(value, element) {
    return this.optional(element) || (isIdCard(value));
},
"身份證號非法!");

來個簡的demo,看看效果如何。

復制代碼 代碼如下:

 <!DOCTYPE html>
 <html>
     <head>
         <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
         <title>
             身份證號校驗
         </title>
         <script src="         </script>
         <script src="
         </script>
         <script type="text/javascript">
             $(function () {
                 $("#form1").validate({
                     rules: {
                         txtIdCard: "isIdCard"
                     }
                 });
             });
             // 身份證號驗證
             function isIdCard(cardid) {
                 //身份證正則表達式(18位)
                 var isIdCard2 = /^[1-9]/d{5}(19/d{2}|[2-9]/d{3})((0/d)|(1[0-2]))(([0|1|2]/d)|3[0-1])(/d{4}|/d{3}X)$/i;
                 var stard = "10X98765432"; //最后一位身份證的號碼
                 var first = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2]; //1-17系數
                 var sum = 0;
                 if (!isIdCard2.test(cardid)) {
                     return false;
                 }
                 var year = cardid.substr(6, 4);
                 var month = cardid.substr(10, 2);
                 var day = cardid.substr(12, 2);
                 var birthday = cardid.substr(6, 8);
                 if (birthday != dateToString(new Date(year+'/'+month+'/'+day))) {//校驗日期是否合法
                     return false;
                 }
                 for (var i = 0; i < cardid.length - 1; i++) {
                     sum += cardid[i] * first[i];
                 }
                 var result = sum % 11;
                 var last = stard[result]; //計算出來的最后一位身份證號碼
                 if (cardid[cardid.length - 1].toUpperCase() == last) {
                     return true;
                 } else {
                     return false;
                 }
             }
             //日期轉字符串 返回日期格式20080808
             function dateToString(date) {
                 if (date instanceof Date) {
                     var year = date.getFullYear();
                     var month = date.getMonth() + 1;
                     month = month < 10 ? '0' + month : month;
                     var day = date.getDate();
                     day = day < 10 ? '0' + day : day;
                     return year + month + day;
                 }
                 return '';
             }
             // jquery validate身份證號驗證
             jQuery.validator.addMethod("isIdCard",
             function (value, element) {
                 return this.optional(element) || (isIdCard(value));
             },
             "身份證號非法!");
         </script>
     </head>
     <body>
         <form id="form1" method="get" action="">
             <input type="text" id="txtIdCard" name="txtIdCard" />
             <p>
                 <input class="submit" type="submit" value="提交" />
             </p>
         </form>
     </body>
 </html>  

用百度百科上提供的那身份證號53010219200508011X驗證下

驗證能通過,把x換成0試試

校驗不通過,我們寫的驗證方法成功了!不信你用自己的身份證號試試。原來用js校驗身份證號so easy。

以上就是本文的全部內容了,希望大家能夠喜歡。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
97香蕉超级碰碰久久免费的优势| 亚洲欧美激情四射在线日| 亚洲人成网站777色婷婷| 中文字幕国产亚洲2019| 一区二区三区久久精品| 久久久久久这里只有精品| 国产一区二区三区日韩欧美| 永久免费毛片在线播放不卡| 亚洲欧美激情四射在线日| 欧美理论电影网| 91免费看国产| 亚洲一区二区久久久久久| 国产精品电影观看| 日韩精品电影网| 欧美在线视频网站| 中文字幕亚洲综合久久| 成人乱色短篇合集| 欧美一区二区三区免费观看| 91精品视频观看| 国产精品美女久久久久av超清| 亚洲区在线播放| 国内精品久久久久影院 日本资源| 国产精品黄色影片导航在线观看| 国产成人精品久久二区二区91| 成人乱色短篇合集| 久久综合久久88| 国产中文字幕91| 亚洲美女av在线播放| 午夜精品美女自拍福到在线| 精品一区二区三区四区| 中文字幕日韩免费视频| 日韩女优人人人人射在线视频| 欧美午夜精品伦理| 午夜精品一区二区三区在线视| 国产美女直播视频一区| 国产午夜精品全部视频在线播放| 欧美日韩精品国产| 久久大大胆人体| 亚洲视频在线播放| 国产精品欧美日韩一区二区| 中文字幕国产精品久久| 久久久999成人| 国产精品香蕉av| 成人黄色激情网| 欧美视频免费在线观看| 欧美视频一二三| 亚洲天堂av在线播放| 在线观看91久久久久久| 欧美日韩国产第一页| 国产精品视频不卡| 综合网中文字幕| 国产成人鲁鲁免费视频a| 97在线视频免费观看| 色av吧综合网| 欧亚精品在线观看| 久久久精品国产亚洲| 国产精品直播网红| 国产精品久久久久久久久久东京| 欧美黑人性猛交| 国产婷婷色综合av蜜臀av| 欧美精品videos另类日本| 久久久久久av| 中文字幕9999| 亚洲欧美另类在线观看| 欧美亚洲视频一区二区| 中文一区二区视频| 精品国产一区二区三区四区在线观看| 综合国产在线观看| 亚洲最大av网站| 亚洲电影av在线| 欧美激情视频网站| 91sa在线看| 国产一区二区三区18| 69av成年福利视频| 久久全球大尺度高清视频| 欧美激情视频网址| 午夜精品美女自拍福到在线| 久久91亚洲人成电影网站| 亚洲综合日韩在线| 91香蕉嫩草神马影院在线观看| 91精品久久久久久综合乱菊| 欧美激情亚洲另类| 亚洲精品久久久久中文字幕欢迎你| 久久久久久久电影一区| 亚洲欧美精品一区二区| 精品视频久久久久久久| 中文字幕亚洲国产| 久久综合色影院| 国产精品国模在线| 欧美性猛交xxxx乱大交蜜桃| 国产aⅴ夜夜欢一区二区三区| 欧美激情视频一区二区三区不卡| 欧美激情视频在线| 欧美自拍大量在线观看| 久久手机精品视频| 精品成人69xx.xyz| 亚洲精品av在线| 91久久精品在线| 亚洲最大av网| 中文国产亚洲喷潮| 欧美国产日韩一区二区三区| 日韩av男人的天堂| 亚洲电影免费观看高清完整版在线观看| 精品呦交小u女在线| 亚洲va码欧洲m码| 国产精品一区电影| 91精品国产99| 一区二区成人av| 亚洲国产一区二区三区在线观看| 亚洲欧美日韩国产成人| 日韩福利伦理影院免费| 成人性生交xxxxx网站| 亚洲free性xxxx护士hd| 亚洲综合精品一区二区| 日本久久久久久久久久久| 亚洲国产精品久久久久| 中文字幕亚洲一区在线观看| 国外色69视频在线观看| 欧美xxxx做受欧美.88| 红桃av永久久久| 亚洲国产成人精品久久久国产成人一区| 中文字幕久久精品| 亚洲激情 国产| 91av在线影院| 精品亚洲精品福利线在观看| 色小说视频一区| 伊人久久久久久久久久久| 国产精品va在线播放我和闺蜜| 久久国产一区二区三区| 国产日韩视频在线观看| 中文字幕亚洲一区二区三区| 欧美黑人狂野猛交老妇| 亚洲午夜国产成人av电影男同| 国内精品中文字幕| 精品久久久久久久久国产字幕| 青青草成人在线| 日韩最新免费不卡| 日韩av影片在线观看| 国产精品揄拍500视频| 国内精久久久久久久久久人| 亚洲视频电影图片偷拍一区| 欧美日韩一区二区免费视频| 日韩中文字幕不卡视频| 国产成人avxxxxx在线看| 亚洲综合在线做性| 激情亚洲一区二区三区四区| 第一福利永久视频精品| 日韩欧美第一页| 国产精品色婷婷视频| 欧美麻豆久久久久久中文| 欧美视频在线免费| 欧美大片免费观看在线观看网站推荐| 日韩中文有码在线视频| 欧美成人免费va影院高清| 亚洲精品第一国产综合精品| 欧美成人中文字幕| 欧美激情一区二区三区成人| 成人免费网站在线观看| 精品视频一区在线视频| 在线观看精品国产视频| 91久久在线观看| 日韩精品极品毛片系列视频| 久久成人人人人精品欧| 国产精品免费观看在线|