公民身份证号码按照 GB11643—1999《公民身份证号码》国家标准编制。
由18位数字组成:前6位为行政区划分代码,第7位至14位为出生日期码,第15位至17位为顺序码,第18位为校验码。
在上世纪(二十世纪)办的身份证为15位数字码。原来7、8位的年份号到2000年后攺为全称,如1985年过去7、8位码是85,现在增改为1985,而又在最后一位增加校验码,如后三位原来601,加一个5成为6015。
身份证一经编定不作改变,派出所会在户口资料中给你加上,你要换新证时就是18位的新码了。
第一代身份证都是15位的
其中从左至右前六位是反映地址的,如同一个县区镇的人员,前六位是一致的
从第七位数至12位数是反映个人出生日期的.7、8两位数是年(如1979年出处的,出生年只取后两位即79),9、10两位是月、11、12两位数是日。
最后三位是顺序码,即在同一地同年同日生人作区分的,其中最后一位是偶数的分配给女性(即最后一位是偶数号的一定是女性,奇数的一定是男性)
第二代身份证是18位的
其中前六位与15位码一样
第六到14位是出生日期,从第七位数至12位数是反映个人出生日期的.7至10位数是年(如1979年出处的,出生年只取1979,这样避免无法区分2000后或2000年前出生的区别,再按15位码,01年出生就不能区分是1901年出生还是2001年出生的,毕竟100岁以上老人还是有的),11、12两位数是月、13、14两位数是日。
最后四位是顺序码,即在同一地同年同日生人作区分的,其中第十七位是偶数的分配给女性(即最后一位是偶数号的一定是女性,奇数的一定是男性,最后一位是较验值,是按前17位编码按一定规则加权计算出来的,如是0-9,就取数字,是10就取X)
所以在凡有电脑录入身份证号的,身份证号只能是15位或18位数,不过随着一代身份证有效期的逐渐到期,很快所有人的身份证就会变为二代身证,号码会统一成十八位。不过一代号码在身份证系统中会自动链接到二代号的。
js写身份证号正则表达式规则
不严谨的写法(不校验区域编号是否合法以及出生年月日日是否合法):
- 15位纯数字 或 17位纯数字 +(0~9或X/x)
var pattCardId = /(\d{15}$)|(\d{18}$)|(^\d{17}(\d|X|x)$)/;
var pattCardId = /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/;
var editDriverCardId = function (item) {
var pId = item.id;
var dCard = item.driverCardId;
if(!dCard){
return "请填写有效证件号,必填项";
}else{
if(pattCardId.test(dCard)){
vm.driverGridData[pId].driverCardId = dCard;
return ""+dCard+"";
}else{
vm.driverGridData[pId].driverCardId = "";
return "身份证格式非法";
}
}
}