废话更少,代码是直接的,注释中的解析是清晰的,这里不是BB。
复制代码代码如下所示:
*
根据中华人民共和国国家标准GB 11643-1999 公民的有关规定的身份证号码,公民身份号码是组合码,由十七位数字本体码和一位数字校验码。从左到右的
顺序是六位
地址码,八位数字的
日期码,三位顺序码和一位校验码。
地址码表示编码对象永久居住地的县(市、旗、区)的行政区划代码。
日期代码表示编码对象的年份、月份和日,其中以四位数字表示年份,并且不分开年份、月份和日期。
序列码表示在同一地址、同一地址码中的同一年、月和日出生的人的序列号。奇数序列码分为男性,偶数码给妇女。
校验码是根据前十七位数字代码,根据ISO 7064: 1983.mod 11-2校验码计算的测试代码。
计算出生日期的
方法。
身份证代码首先
扩展出生到4年,和简单的一个是19或18的增长,其中包括所有那些出生的1800-1999年。
出生后18年当然不是麻烦,但出生前1800,然后什么不应该ID号的东东,**,汗…
下面是正则表达式:
1800-2099出生日期(18 | 19 | 20) D { 2 }(0 { } | 1-9 1 { 12 })(0 | 1-9 } { { 12 } D | 3 { 01 })
正则表达式的身份证/ ^ D { 6 }(18 | 19 | 20) D { 2 }(0 { } | 1-9 1 { 12 })(0 | 1-9 } { { 12 } D | 3 { 01 }) D { 3 }(三维| x)$ /我
位校验规则6位地址编码+ 6位日期+ 3位序号
位校验规则6位地址编码+ 8位日期+ 3位序列号+ 1位校验位
的校验规则公式:(AI T2*WI)(mod 11).........(1)
在公式(1)中:
表示从左边到左边的数字字符的数目,包括校验码。
ai表示i
位置上的数字字符值;
WI
显示了i位置上的加权因子,它的值是根据公式2=n-1(n-1)(mod 11)计算的。
我181716151413121110 87654321
无线79105842163 791058421
* /
身份证号码验证
支持15位和18位ID号
支持地址编码、出生日期、奇偶校验
功能identitycodevalid(代码){
var = 11:12:北京
var;
var =真的;
如果(代码| |!! / ^ D { 6 }(18 | 19 | 20) D { 2 }(0 { } | 1-9 1 { 12 })(0 | 1-9 } { { 12 } D | 3 { 01 }) D { 3 }( D | X)$ / i.test(代码)){
提示id号中的
错误;
传递= false;
}
否则如果(!市code.substr(0,2){ }){
提示地址编码错误;
传递= false;
}
别的{
18位ID卡需要验证结帐的最后一位。
如果(code.length = = 18){
代码= code.split('');
西格玛(AI)(国防部11)
/加权因子
var因子{ 7, 9, 10,5, 8, 4,2, 1, 6,3, 7, 9,10, 5。
检查 VaR平价= { 1, 0,x,9, 8, 7,6, 5, 4,3, 2 };
var总和= 0;
var = 0;
var = 0;
对于(var i = 0;i < 17;i + +)
{
ai =代码{ };
因子= i };
总和= AI *;
}
var =奇偶校验{和% 11 };
如果(奇偶校验{ % 11 }!=代码{ 17 }){
提示检查位错误;
传递= false;
}
}
}
如果(!传递警报(提示);
回传球;
}
var c = '130981199312253466;
VaR既= IdentityCodeValid(C);
你好吗这是很全面的。在因特网上
搜索的第一张身份证号码验证码和其他验证码几乎不是一个维度。小伙伴需要直接拿走的是他们的使用。