作者:admin 发布时间:2022-12-17 09:59 分类:算命 浏览:133
本篇文章给大家谈谈身份证号码验证器,以及身份证号码检测器对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
3505 8319XX xx xx xx xx 18位
1、居民身份证号码是代表居民身份的证件。根据《中华人民共和国国家标准》( GB 11643-1999)中有关公民身份号码的规定,公民身份号码是特征组合码,由十七位数字本体码和一位数字校验码组成。
2、排列顺序从左至右依次为六位数字地址码、八位数字出生日期码、三位数字顺序码和一位数字校验码。
3、居民身份证是国家法定的证明公民个人身份的有效证件。中国自1985年开始实行居民身份证制度,当时签发的身份证号码是15位,1999年签发的身份证由于年份的扩展(由两位变为四位)和末尾加了效验码,即成了18位。
我给你一个很强大的js校验身份证工具方法,其中身份证号是用jquery从网页中某个标签里去取值的,你可以改造成传参也行。
/*****身份证合法性验证*****/
function checkIdCard(){
var idcard = $("#certiNbr").val();
if (idcard.replace(/\s/g, "") == "") {
$("#theAvailabilitySpan").html("请输入证件号码");
$("#checkButton").attr("disabled", "disabled");
return false;
}
var msg = checkId(idcard);
var code = msg.substring(0,1);
if("0" == code){
msg = msg.substring(1,msg.length);
$("#checkButton").attr("disabled", "disabled");
}
$("#theAvailabilitySpan").html(msg);
}
function checkId(idcard){
var Errors=new Array(
"身份证验证通过!",
"0身份证号码位数不对!",
"0身份证号码出生日期超出范围或含有非法字符!",
"0身份证号码校验错误!",
"0身份证地区非法!"
);
var area={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:"澳门",91:"国外"}
var idcard,Y,JYM;
var S,M;
var idcard_array = new Array();
idcard_array = idcard.split("");
//地区检验
if(area[parseInt(idcard.substr(0,2))]==null){
return Errors[4];}
//身份号码位数及格式检验
switch(idcard.length){
case 15:
if ( (parseInt(idcard.substr(6,2))+1900) % 4 == 0 || ((parseInt(idcard.substr(6,2))+1900) % 100 == 0 (parseInt(idcard.substr(6,2))+1900) % 4 == 0 )){
ereg=/^[1-9][0-9]{5}[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|[1-2][0-9]))[0-9]{3}$/;//测试出生日期的合法性
} else {
ereg=/^[1-9][0-9]{5}[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|1[0-9]|2[0-8]))[0-9]{3}$/;//测试出生日期的合法性
}
if(ereg.test(idcard)) return Errors[0];
else return Errors[2];
break;
case 18:
//18位身份号码检测
//出生日期的合法性检查
//闰年月日:((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|[1-2][0-9]))
//平年月日:((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|1[0-9]|2[0-8]))
if ( parseInt(idcard.substr(6,4)) % 4 == 0 || (parseInt(idcard.substr(6,4)) % 100 == 0 parseInt(idcard.substr(6,4))%4 == 0 )){
ereg=/^[1-9][0-9]{5}19[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|[1-2][0-9]))[0-9]{3}[0-9Xx]$/;//闰年出生日期的合法性正则表达式
} else {
ereg=/^[1-9][0-9]{5}19[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|1[0-9]|2[0-8]))[0-9]{3}[0-9Xx]$/;//平年出生日期的合法性正则表达式
}
if(ereg.test(idcard)){//测试出生日期的合法性
//计算校验位
S = (parseInt(idcard_array[0]) + parseInt(idcard_array[10])) * 7
+ (parseInt(idcard_array[1]) + parseInt(idcard_array[11])) * 9
+ (parseInt(idcard_array[2]) + parseInt(idcard_array[12])) * 10
+ (parseInt(idcard_array[3]) + parseInt(idcard_array[13])) * 5
+ (parseInt(idcard_array[4]) + parseInt(idcard_array[14])) * 8
+ (parseInt(idcard_array[5]) + parseInt(idcard_array[15])) * 4
+ (parseInt(idcard_array[6]) + parseInt(idcard_array[16])) * 2
+ parseInt(idcard_array[7]) * 1
+ parseInt(idcard_array[8]) * 6
+ parseInt(idcard_array[9]) * 3 ;
Y = S % 11;
M = "F";
JYM = "10X98765432";
M = JYM.substr(Y,1);//判断校验位
if(M == idcard_array[17]) return Errors[0]; //检测ID的校验位
else return Errors[3];
}
else return Errors[2];
break;
default:
return Errors[1];
break;
}
}
function check(obj){
alert(checkIdcard(obj.value));
}
/********************客户信息end********************/
像这样写个视图就行了:
create View eVMutiCard
AS
Select a.Badge,a.Name,a.DepID,a.Compid,a.JobID,a.Status,a.EmpType,a.ReportTo,
b.Identification,
N'身份证长度不合常理' As Remark
From employee b
Where (Len(b.Identification) Not In (15,18)
And b.Identification Is Not Null )
Or b.Identification is Null
Union All
Select a.Badge,a.Name,a.DepID,a.Compid,a.JobID,a.Status,a.EmpType,a.ReportTo,
b.Identification,
N'身份证具有无效字符' As Remark
From employee b
Where Len(b.Identification) In (15,18)
And Isnumeric(Case Len(b.Identification) When 18 Then Substring(b.Identification,1,17)
Else b.Identification End) = 0
Union All
Select a.Badge,a.Name,a.DepID,a.Compid,a.JobID,a.Status,a.EmpType,a.ReportTo,
b.Identification,
N'身份证出生日期不合常理' As Remark
From employee b
Where Len(b.Identification) In (15,18)
And (IsDate(Case When Len(b.Identification)=15 Then '19'+Substring(b.Identification,7,2)+'-'+Substring(b.Identification,9,2)+'-'+Substring(b.Identification,11,2)
Else Substring(b.Identification,7,4)+'-'+Substring(b.Identification,11,2)+'-'+Substring(b.Identification,13,2)
End)=0
Or Not (
(Case When Len(b.Identification)=15 Then '19'+Substring(b.Identification,7,2)+'-'+Substring(b.Identification,9,2)+'-'+Substring(b.Identification,11,2)
Else Substring(b.Identification,7,4)+'-'+Substring(b.Identification,11,2)+'-'+Substring(b.Identification,13,2)
End) Between '1900-01-01' And '2079-06-06'))
Union All
Select a.Badge,a.Name,a.DepID,a.Compid,a.JobID,a.Status,a.EmpType,a.ReportTo,
b.Identification,
N'身份证校验位不正确(第18位与校验不符)' As Remark
From employee b
Where (Len(b.Identification) = 18
And substring(b.Identification,18,19) dbo.GetCheckIDCardCode(b.Identification)
And b.Identification Is Not Null)
其中跟据国家规定的计算公式,计算18位身份证检验位的dbo.GetCheckIDCardCode如下:
CREATE function GetCheckIDCardCode(@sfzh char(18))
returns char(1)
as
begin
declare @r varchar(2)
declare @i int
if len(@sfzh) 18
set @r = 0
else
set @i = cast(substring(@sfzh,1,1) as int) * 7
+cast(substring(@sfzh,2,1) as int) * 9
+cast(substring(@sfzh,3,1) as int) * 10
+cast(substring(@sfzh,4,1) as int) * 5
+cast(substring(@sfzh,5,1) as int) * 8
+cast(substring(@sfzh,6,1) as int) * 4
+cast(substring(@sfzh,7,1) as int) * 2
+cast(substring(@sfzh,8,1) as int) * 1
+cast(substring(@sfzh,9,1) as int) * 6
+cast(substring(@sfzh,10,1) as int) * 3
+cast(substring(@sfzh,11,1) as int) * 7
+cast(substring(@sfzh,12,1) as int) * 9
+cast(substring(@sfzh,13,1) as int) * 10
+cast(substring(@sfzh,14,1) as int) * 5
+cast(substring(@sfzh,15,1) as int) * 8
+cast(substring(@sfzh,16,1) as int) * 4
+cast(substring(@sfzh,17,1) as int) * 2
set @i = @i - @i/11 * 11
set @r = cast((case @i
when 0 then 1
when 1 then 0
when 2 then 11
when 3 then 9
when 4 then 8
when 5 then 7
when 6 then 6
when 7 then 5
when 8 then 4
when 9 then 3
when 10 then 2
else '' end) as char)
if (@r = 11) set @r='X'
else set @r = @r
set @r = '' + @r +''
return @r
end
身份证号码排列是有规律的,最后一位是验证码,在外网上有身份证号码验证器的。你可以下载试试。
如是要查看使用的联通号码,实名登记的身份证和姓名是否一致,可以通过查看号码的个人信息核查,登录网上营业厅 点击自助服务,点击您姓名左边的头像图标,即可查看个人信息,信息包括客户姓名、性别、证件号码、联系电话、联系地址、当前套餐、当前状态、账单户名、通话级别、漫游级别、入网日期、所属品牌、付费类型、PUK码等。
————————————————————————————————————————————
【强力推介】
优惠大赠送!4G全国套餐存费送优惠、4G全国组合套餐流量话费包长期8折、全国流量半年包8折劲减!还等什么,点击下列相应链接进行办理吧!
【4G全国套餐】:
【4G组合套餐】:
【全国流量半年包】:
身份信息核查是利用“全国公民身份信息系统(NCIIS)”,通过短信、wap等数据平台和互联网,为满足行业用户或个人用户及时确定被核查人身份信息需求而推出的一项便民服务。
现在很多人通过网络查询验证身份信息,像红云快查。只需要打开微信,搜索:红云快查,填入姓名和身份号码就可以核验是否一致、归属地、出生日期等信息,非常的方便,节省时间。
身份证号码中的校验码是身份证号码的最后一位,是有关公民身份号码的规定,根据精密的计算公式计算出来的,公民身份号码是特征组合码,由十七位数字本体码和一位数字校验码组成。
18位号码的身份证各数字位是有规律的,第十八位是检校位,对前17位加权运算去余再映射,得到的结果是唯一的。但结果只有一个:即这个身份证号的算法是正确或不正确的,是否真实存在不保证。
倒数第二位单数代表男,双数代表女,前六位可以分析出省份市区即县镇,接着是生日,这个就比较显然了。而倒数后三位是随机的,只与当地派出所有一点关系。所以根据这些信息你可以做简单判断
身份证号码验证器的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于身份证号码检测器、身份证号码验证器的信息别忘了在本站进行查找喔。