身份證的校驗

console.log('=============基本認證(有bug)==================');

console.log('===1-6位地區(qū)的校驗===');

var regxSec = /^[1-9]\d{5}/;

console.log('===年份的校驗===');

var regYear = /(18|19|20)\d{2}/;

console.log('===月份的校驗===');

var regMonth = /((0[1-9]))|(1[0-2])/;

console.log('===日期的校驗===');

var regDay = /(([0-2][1-9])|10|20|30|31)/;

console.log('===順序碼的校驗===');

var regOrder = /\d{3}/;

console.log('===校驗碼的校驗===');

var regCode = /[0-9Xx]/;

console.log('===綜上所述滥壕,合并上述校驗規(guī)則===');

var regCheck = /^[1-9]\d{5}(18|19|20)\d{2}((0[1-9])|(1[1-2]))(([0-2][1-9])|10|20|30|31)\d{3}[1-9Xx]$/;

var myCode? = '430725198905303965',

errcode = '26524519630230356x';

console.log( regCheck.test(myCode));

console.log( regCheck.test(errcode));

/*****

* 以上身份證驗證有如下漏洞:

* 1.地址碼判定不夠精確,例我國并不存在16,26開頭的地址兽泣,但可以通過驗證绎橘;

* 2.日期判定不夠精確,如19490231也可通過驗證

* 3.校驗碼是由17位的本體碼計算得出的唠倦,以上方案并未校驗此碼

* ********/

console.log('=============完善認證==================');

/*****

* 省級地址校驗碼:

* 華北 : 北京11 称鳞,天津11 ,河北13 稠鼻, 山西14 冈止, 內(nèi)蒙古15,

* 東北 : 遼寧21 候齿,吉林22 ,黑龍江23慌盯,

* 華東 : 上海31 周霉,江蘇32 ,浙江33 亚皂, 安徽34 俱箱, 福建35 , 江西36 灭必, 山東37狞谱,

* 華中 : 河南41 巍膘,湖北42 ,湖南43 芋簿,

* 華南 : 廣州44 峡懈,廣西45 , 海南46 与斤,

* 西南 : 四川51 肪康,貴州52 ,云南53 撩穿,西藏54 磷支,重慶50 ,

* 西北 : 陜西61 食寡,甘肅62 雾狈,青海63 ,寧夏64 抵皱,新疆65 善榛,

* 特別 : 臺灣71 ,香港81 呻畸,澳門82

* *

* 由于區(qū)劃代碼的歷史演變移盆,地址后四位校驗變得不太可能

* *******/

//省份前兩位校驗

var checkPro = function( code ){

var pattern = /^[1-9][0-9]/;

var provs = {11 : '北京',12 : '天津',13 : '河北',14 : '山西',15 : '內(nèi)蒙古',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 : '澳門'};

if( pattern.test( code ) ){

if( provs[code] ){

return true ;

}

}

console.log( '地區(qū)校驗不通過' )

return false;

}

//出生日期校驗

var checkDate = function( code ){

var pattern = /^(18|19|20)\d{2}((0[1-9])|(1[0-2]))(([0-2][1-9])|10|20|30|31)$/;

if( pattern.test( code ) ){

var year? = code.substring(0,4);

var month = code.substring(4,6);

var day? = code.substring(6,8);

var data2 = new Date( year+'-'+month+'-'+day );

if( data2 && data2.getMonth() == parseInt( month-1) ){

return true;

}

}

console.log( '出生日期校驗不通過' )

return false;

}

//校驗碼驗證

/****

* 校驗碼公式可以去網(wǎng)上找 ;

* 根據(jù)身份證主體碼(前17位)分別與對應(yīng)的加權(quán)因子計算乘積在求和伤为,根據(jù)所得結(jié)果與11取模得到x值咒循。

* 根據(jù)x的值查詢表,得出第18位的校驗碼

* ****/

var checkCode = function( code ){

var pattern? = /^[1-9]\d{5}(18|19|20)\d{2}((0[1-9])|(1[1-2]))(([0-2][1-9])|10|20|30|31)\d{3}[1-9Xx]$/ ,

factory? = [7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2],

parity? = [1,0,"X",9,8,7,6,5,4,3,2];

waitCode = code.substring(17);

if( pattern.test( code ) ){

var sum = 0 ;

for( var i = 0 ; i < 17? ; i++){

sum += code[i]*factory[i];

}

if( parity[ sum%11 ] == waitCode.toUpperCase() ){

return true;

}

}

console.log( '校驗碼校驗不通過' )

return false;

}

//整體

var checkID = function( code ){

if( checkCode( code ) ){

var date = code.substring( 6 , 14 );

if( checkDate( date ) ){

if( checkPro( code.substring(0,2) ) ){

return true;

}

}

}

return false

}

console.log( checkID( '430725198905293963' ));

console.log( checkID( '260725198905293963' ));

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末绞愚,一起剝皮案震驚了整個濱河市叙甸,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌位衩,老刑警劉巖裆蒸,帶你破解...
    沈念sama閱讀 219,427評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異蚂四,居然都是意外死亡光戈,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,551評論 3 395
  • 文/潘曉璐 我一進店門遂赠,熙熙樓的掌柜王于貴愁眉苦臉地迎上來久妆,“玉大人,你說我怎么就攤上這事跷睦】晗遥” “怎么了?”我有些...
    開封第一講書人閱讀 165,747評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長烂琴。 經(jīng)常有香客問我爹殊,道長,這世上最難降的妖魔是什么奸绷? 我笑而不...
    開封第一講書人閱讀 58,939評論 1 295
  • 正文 為了忘掉前任梗夸,我火速辦了婚禮,結(jié)果婚禮上号醉,老公的妹妹穿的比我還像新娘反症。我一直安慰自己,他們只是感情好畔派,可當我...
    茶點故事閱讀 67,955評論 6 392
  • 文/花漫 我一把揭開白布铅碍。 她就那樣靜靜地躺著,像睡著了一般线椰。 火紅的嫁衣襯著肌膚如雪胞谈。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,737評論 1 305
  • 那天憨愉,我揣著相機與錄音烦绳,去河邊找鬼。 笑死莱衩,一個胖子當著我的面吹牛爵嗅,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播笨蚁,決...
    沈念sama閱讀 40,448評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼趟庄!你這毒婦竟也來了括细?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,352評論 0 276
  • 序言:老撾萬榮一對情侶失蹤戚啥,失蹤者是張志新(化名)和其女友劉穎奋单,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體猫十,經(jīng)...
    沈念sama閱讀 45,834評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡览濒,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,992評論 3 338
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了拖云。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片贷笛。...
    茶點故事閱讀 40,133評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖宙项,靈堂內(nèi)的尸體忽然破棺而出乏苦,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 35,815評論 5 346
  • 正文 年R本政府宣布汇荐,位于F島的核電站洞就,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏掀淘。R本人自食惡果不足惜旬蟋,卻給世界環(huán)境...
    茶點故事閱讀 41,477評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望革娄。 院中可真熱鬧倾贰,春花似錦、人聲如沸稠腊。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,022評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽架忌。三九已至吞彤,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間叹放,已是汗流浹背饰恕。 一陣腳步聲響...
    開封第一講書人閱讀 33,147評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留井仰,地道東北人埋嵌。 一個月前我還...
    沈念sama閱讀 48,398評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像俱恶,于是被迫代替她去往敵國和親雹嗦。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,077評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 上一趟街泊藕,我覺得自己一無是處,還有难礼!什么都比不過人家娃圆。 今天早上,因為寶寶手痛的直哭蛾茉,就想帶她去醫(yī)院看看讼呢,她哭鬧個...
    龍葉閱讀 4,104評論 0 1
  • 01 今天網(wǎng)絡(luò)被林丹出軌的新聞淪陷了。 很快窜管,林丹也發(fā)微博像家人道歉散劫,承認出軌。 就像明知道打你會疼幕帆,但還是狠心地...
    君子筱姐閱讀 268評論 0 1
  • 寶貝获搏,你好! 這個端午小假期失乾,我們一家三口去游玩了天堂寨常熙。 我一直以為天堂寨就在我們安徽境內(nèi),到了和當?shù)氐木用窳奶?..
    慧媽有氧閱讀 701評論 2 2
  • 深夜碱茁,最會讓人迷亂裸卫,那些不知名的情感會迸發(fā)出來,可往往黑夜也是最適合思考的時間纽竣。 記得在大學(xué)的時候墓贿,有一個同學(xué),他...
    七號燈塔閱讀 831評論 0 1