最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JS前后端實(shí)現(xiàn)身份證號(hào)驗(yàn)證代碼解析

 更新時(shí)間:2020年07月23日 11:22:34   作者:Tom最好的朋友是Jerry  
這篇文章主要介紹了JS前后端實(shí)現(xiàn)身份證號(hào)驗(yàn)證代碼解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

前言

  實(shí)名制是許多網(wǎng)站都必備的功能,因此用戶經(jīng)常需要輸入身份證號(hào),但是我們無(wú)法連通公安局的數(shù)據(jù)庫(kù)進(jìn)行驗(yàn)證身份證和姓名地址是否匹配,因此可以根據(jù)身份證生成的規(guī)則來(lái)進(jìn)行身份證格式的驗(yàn)證,以下僅介紹二代身份證的驗(yàn)證。

計(jì)算公式

  公民身份號(hào)碼是特征組合碼,由十七位數(shù)字本體碼和一位校驗(yàn)碼組成。

  排列順序從左至右依次為:六位數(shù)字地址碼,八位數(shù)字出生日期碼,三位數(shù)字順序碼和一位校驗(yàn)碼。

    1、地址碼:表示編碼對(duì)象常住戶口所在縣(市、旗、區(qū))的行政區(qū)域劃分代碼,按GB/T2260的規(guī)定執(zhí)行。

    2、出生日期碼:表示編碼對(duì)象出生的年、月、日,按GB/T7408的規(guī)定執(zhí)行,年、月、日代碼之間不用分隔符。

    3、順序碼:表示在同一地址碼所標(biāo)識(shí)的區(qū)域范圍內(nèi),對(duì)同年、同月、同日出生的人編定的順序號(hào),順序碼的奇數(shù)分配給男性,偶數(shù)分配給女性。

    4、校驗(yàn)碼計(jì)算步驟:

      (1)十七位數(shù)字本體碼加權(quán)求和公式:

        S = Sum(Ai * Wi), i = 0, … , 16 ,先對(duì)前17位數(shù)字的權(quán)求和;
        Ai:表示第i位置上的身份證號(hào)碼數(shù)字值(0~9);
        Wi:7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2 (表示第i位置上的加權(quán)因子);

      (2)計(jì)算模:Y = mod(S, 11);

      (3)根據(jù)模,查找得到對(duì)應(yīng)的校驗(yàn)碼:Y: 0 1 2 3 4 5 6 7 8 9 10   校驗(yàn)碼: 1 0 X 9 8 7 6 5 4 3 2;

前端驗(yàn)證

const weight = [7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2];//十七位數(shù)字本體碼權(quán)重
const validate = ['1','0','X','9','8','7','6','5','4','3','2'];//mod11,對(duì)應(yīng)校驗(yàn)碼字符值

function getValidateCode(id17){
 let sum = 0;
 let mode = 0;
 [...id17].forEach((elem,i) => {
  sum=sum+parseInt(elem)*weight[i];
 });
 mode = sum % 11;
 return validate[mode];
}
console.log("該身份證驗(yàn)證碼:"+ getValidateCode("14230219700101101"));//該身份證驗(yàn)證碼:3

后端驗(yàn)證(Java)

public class Id18 {
 int[] weight={7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};//十七位數(shù)字本體碼權(quán)重
 char[] validate={ '1','0','X','9','8','7','6','5','4','3','2'};//mod11,對(duì)應(yīng)校驗(yàn)碼字符值  
 
 public char getValidateCode(String id17){
   int sum = 0;
   int mode = 0;
   for(int i = 0; i < id17.length(); i++){
     sum=sum+Integer.parseInt(String.valueOf(id17.charAt(i)))*weight[i];
   }
   mode = sum % 11;
   return validate[mode];
 }
 
 public static void main(String[] args){
   Id18 tes t= new Id18();
   System.out.println("該身份證驗(yàn)證碼:"+test.getValidateCode("14230219700101101"));//該身份證校驗(yàn)碼:3
 }
}

總結(jié)

  身份證驗(yàn)證和手機(jī)號(hào)郵箱等格式驗(yàn)證是一樣的,都要做前后端雙重驗(yàn)證,前端驗(yàn)證不通過(guò)就不勞煩后端驗(yàn)證,減輕服務(wù)器的壓力;

  至于一代身份證的驗(yàn)證大家也可以查詢下相關(guān)的算法,在原基礎(chǔ)上改改即可,我感覺(jué)現(xiàn)在好像也沒(méi)有一代身份證了,亦或者用一代身份證的人都不怎么上網(wǎng),因此這里就不寫(xiě)了。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • JS結(jié)合WebSocket實(shí)現(xiàn)實(shí)時(shí)雙向通信

    JS結(jié)合WebSocket實(shí)現(xiàn)實(shí)時(shí)雙向通信

    WebSocket 是一種在 Web 應(yīng)用程序中實(shí)現(xiàn)實(shí)時(shí)、雙向通信的協(xié)議,在本文中,我們將深入介紹 WebSocket 的原理、用法以及一些實(shí)際應(yīng)用場(chǎng)景,x需要的可以參考下
    2023-11-11
  • DropDownList控件綁定數(shù)據(jù)源的三種方法

    DropDownList控件綁定數(shù)據(jù)源的三種方法

    本文給大家分享web 中 DropDownList綁定數(shù)據(jù)源的幾種方式以及DropdownList控件動(dòng)態(tài)綁定數(shù)據(jù)源的兩種方法,下面通過(guò)本文給大家詳細(xì)介紹,感興趣的朋友一起看看
    2016-12-12
  • JavaScript子類(lèi)用Object.getPrototypeOf去調(diào)用父類(lèi)方法解析

    JavaScript子類(lèi)用Object.getPrototypeOf去調(diào)用父類(lèi)方法解析

    這篇文章主要介紹了JavaScript子類(lèi)用Object.getPrototypeOf去調(diào)用父類(lèi)方法。需要的朋友可以過(guò)來(lái)參考下,希望對(duì)大家有所幫助
    2013-12-12
  • JS函數(shù)內(nèi)部屬性之a(chǎn)rguments和this實(shí)例解析

    JS函數(shù)內(nèi)部屬性之a(chǎn)rguments和this實(shí)例解析

    在函數(shù)內(nèi)部,有兩個(gè)特殊的對(duì)象:arguments和this。這篇文章主要介紹了函數(shù)內(nèi)部屬性之a(chǎn)rguments和this ,需要的朋友可以參考下
    2018-10-10
  • echarts實(shí)現(xiàn)詞云自定義形狀的示例代碼

    echarts實(shí)現(xiàn)詞云自定義形狀的示例代碼

    這篇文章主要介紹了echarts實(shí)現(xiàn)詞云自定義形狀的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-02-02
  • js實(shí)現(xiàn)帶箭頭的進(jìn)度流程

    js實(shí)現(xiàn)帶箭頭的進(jìn)度流程

    這篇文章為大家詳細(xì)主要介紹了js實(shí)現(xiàn)帶箭頭的進(jìn)度流程,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-03-03
  • JavaScript時(shí)間復(fù)雜度和空間復(fù)雜度

    JavaScript時(shí)間復(fù)雜度和空間復(fù)雜度

    這篇文章主要介紹了JavaScript時(shí)間復(fù)雜度和空間復(fù)雜度,時(shí)間復(fù)雜度和空間復(fù)雜度是衡量一個(gè)算法是否優(yōu)秀的標(biāo)準(zhǔn),通常我們比較兩個(gè)算法時(shí)會(huì)用預(yù)先估算和事后統(tǒng)計(jì),下文詳細(xì)介紹,需要的朋友可以參考一下
    2022-07-07
  • js控制框架刷新

    js控制框架刷新

    一句話控制框架的刷新
    2008-08-08
  • 關(guān)于ES6的六個(gè)小特性(二)

    關(guān)于ES6的六個(gè)小特性(二)

    ES6提供了大量新的好的東西,在過(guò)去的一年內(nèi),瀏覽器提供商做了大量的辛勤工作將新的語(yǔ)言特性更新到他們的瀏覽器中。盡管有重大的更新,很多小的語(yǔ)言更新另我眼前一亮,下面這篇文章主要介紹了關(guān)于ES6的六個(gè)小特性,需要的朋友可以參考下。
    2017-02-02
  • JavaScript canvas實(shí)現(xiàn)七彩時(shí)鐘效果

    JavaScript canvas實(shí)現(xiàn)七彩時(shí)鐘效果

    這篇文章主要為大家詳細(xì)介紹了JavaScript canvas實(shí)現(xiàn)七彩時(shí)鐘效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-05-05

最新評(píng)論

兰州市| 八宿县| 石景山区| 武冈市| 莱州市| 长寿区| 柳林县| 治多县| 屯昌县| 济阳县| 海安县| 苏尼特左旗| 石楼县| 神农架林区| 建阳市| 虹口区| 甘南县| 永平县| 霸州市| 奉化市| 仲巴县| 石家庄市| 鄱阳县| 邵阳县| 四川省| 磐安县| 北碚区| 西林县| 桃园市| 黄梅县| 临西县| 武强县| 封开县| 蓬莱市| 和平县| 辽宁省| 文水县| 河南省| 田阳县| 泰来县| 潜江市|