身份证的校验

console.log('=============基本认证(有bug)==================');

console.log('===1-6位地区的校验===');

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('===综上所述,合并上述校验规则===');

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 , 内蒙古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

* *

* 由于区划代码的历史演变,地址后四位校验变得不太可能

* *******/

//省份前两位校验

var checkPro = function( code ){

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

var provs = {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 : '澳门'};

if( pattern.test( code ) ){

if( provs[code] ){

return true ;

}

}

console.log( '地区校验不通过' )

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;

}

//校验码验证

/****

* 校验码公式可以去网上找 ;

* 根据身份证主体码(前17位)分别与对应的加权因子计算乘积在求和,根据所得结果与11取模得到x值。

* 根据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' ));

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,904评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,581评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,527评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,463评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,546评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,572评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,582评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,330评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,776评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,087评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,257评论 1 344
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,923评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,571评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,192评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,436评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,145评论 2 366
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,127评论 2 352

推荐阅读更多精彩内容

  • 上一趟街,我觉得自己一无是处,还有!什么都比不过人家。 今天早上,因为宝宝手痛的直哭,就想带她去医院看看,她哭闹个...
    龍叶阅读 4,095评论 0 1
  • 01 今天网络被林丹出轨的新闻沦陷了。 很快,林丹也发微博像家人道歉,承认出轨。 就像明知道打你会疼,但还是狠心地...
    君子筱姐阅读 267评论 0 1
  • 宝贝,你好! 这个端午小假期,我们一家三口去游玩了天堂寨。 我一直以为天堂寨就在我们安徽境内,到了和当地的居民聊天...
    慧妈有氧阅读 698评论 2 2
  • 深夜,最会让人迷乱,那些不知名的情感会迸发出来,可往往黑夜也是最适合思考的时间。 记得在大学的时候,有一个同学,他...
    七号灯塔阅读 828评论 0 1