Javascript正则表达式验证ID号是合法的(两种方法)

第一种方法:

注册页面需要对用户有更严格的要求,对js的ID验证需要合法,由本系统严格的功能,从而过滤掉大量的水。

很多时候,我们使用一组正则表达式来确定身份证是否有效。你对身份证的构成了解多少让我们谈谈ID号中包含了多少信息:

1,数字的结构



公民身份号码是一种特征组合码,它由十七位数字本体和一位校验码组成,从左到右依次为六位地址码、八位数字码、三位序列码和一位校验码。

2,地址码(前六位)



该县行政区划代码(市、旗、区)的编码对象常住户口所在地按GB / t2260的规定执行。

3,出生日期(第七至十四)



年、月和日的编码对象的诞生是根据GB / t7408规则执行和代码不是一年之间,隔月,日和代码。

4,序列码(第十五到十七位)



表明在同一个月内分配给男性的奇数分配给男性,甚至女性。

5。校验码(第十八位数)

作为尾号的校验码,按统一的公式的数量单位编制的,如果人的尾号是0 - 9,没有X,但如果尾号是10,那么你必须用X代替,因为如果用10做尾号,那么这个人身份证19位。X是10罗马的号码,取代10 x,可以保证公民的身份证是在符合国家标准。

在知道ID号结构的每个部分的含义之后,我们开始进入主题:

1。确定一个民族地区的目标

无功容量= { 11:12:北京



2、正则表达式判断


功能iscardid(SID){
var ISUM = 0;
var;
如果(! / ^ D { 17 }( D | x)$ / i.test(SID))返回或输入身份证格式错误的长度;
SID = sid.replace( / /我X美元,);
如果(一{ parseInt(sid.substr(0,2))} = = null)返回你的身份证是违法的;
生日= sid.substr(6,4)+-+数字(sid.substr(10,2))+-+数字(sid.substr(12,2));
var a新的日期(sbirthday.replace( / / g, / ));
如果(生日!=(d.getfullyear()+-+(d.getmonth()+ 1)+-+ d.getdate()))回归的身份证上的出生日期是违法的;
对于(var i = 17;我> = 0;我ISUM(数学。战俘)=(2,i)% 11)* parseInt(sid.charat(17 -),11);
如果(ISUM % 11!= 1)返回您的输入ID号是非法的;
/ /城市{ parseInt(sid.substr(0,2)} +)
返回true;
}


第二方法:


功能sccard(){
无功sctype = document.getelementbyid(sc_card_type )的价值;
如果(sctype = =1){
无功sccard = document.getelementbyid(sc_card_num )的价值;
如果(sccard.length!= 0){
如果(!checkcard(sccard)){
$(# errortips)。Html(错误的身份证号码格式);
其他{ }
$(# errortips)。Html();
}
}
}
返回false;
}
/ /功能checkidno(obj){
无功vcity = { 11:北京
21:辽宁
33:浙江
42:湖北
51:四川
63:青海
};
checkcard =功能(obj)
{
/ / var卡= document.getelementbyid('card_no)的价值;
是空的
(如果=)
{ /
返回/ false;
/