身份证号码验证函数

原创 2004年09月16日 16:35:00

 

<!--Vbcript-->

Function CheckIDCard(sStr, ByVal dDate, ByVal nSex)
?CheckIDCard = "False"
?If IsNull(sStr) Or sStr = "" Then Exit Function
?If Not IsDate(dDate) Or dDate = "" Then Exit Function
?If Not IsNumeric(nSex) Or nSex = "" Then Exit Function
?
?Dim oRE, sDate
?
?Set oRE??= New RegExp
?oRE.IgnoreCase?= True
?oRE.Global?= True
?
?nSex?= CInt(nSex Mod 2)
?sDate?= Year(dDate) & DblNum(Month(dDate)) & DblNum(Day(dDate))
?
?Select Case Len(sStr)
??Case 8
???If DateDiff("yyyy", dDate, Date()) < 19 Then Exit Function
???oRE.Pattern?= "^[/d]{8}$"
???If Not oRE.Test(sStr) Then Exit Function
???If sStr <> sDate Then Exit Function
??Case 15
???oRE.Pattern?= "^[/d]{15}$"
???If Not oRE.Test(sStr) Then Exit Function
???If Mid(sStr, 7, 6) <> Right(sDate, 6) Then Exit Function
???If CInt(Mid(sStr, 14, 1)) Mod 2 <> nSex Then Exit Function
??Case 18
???oRE.Pattern?= "^(?:[/d]{18}|[/d]{17}X)$"
???If Not oRE.Test(sStr) Then Exit Function
???If Mid(sStr, 7, 8) <> sDate Then Exit Function
???If CInt(Mid(sStr, 17, 1)) Mod 2 <> nSex Then Exit Function
???
???Dim nN, aW, aC, nL
???
???nN = 0
???aW = Array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2)
???aC = Array("1", "0", "X", "9", "8", "7", "6", "5", "4", "3", "2")
???
???For nL = 1 To 17
????nN = nN + CInt(Mid(sStr, nL, 1)) * aW(nL - 1)
???Next
???
???If UCase(Right(sStr, 1)) <> aC(nN Mod 11) Then Exit Function
??Case Else
???Exit Function
?End Select
?
?Set oRE??= Nothing
?
?CheckIDCard = "True"
End Function

Function DblNum(nNum)
?DblNum = nNum
?If DblNum <10 Then DblNum = "0" & DblNum
End Function

 

<!--Javascript-->

function checkIDCard(s, d, g)
{
if (!s) return false;
d = new Date(d);
if (!d.getTime()) return false;

var t, r;

t = "" + d.getFullYear() + dblNum(d.getMonth() + 1) + dblNum(d.getDate());

if (g == null || isNaN(g)) return false;
g = parseInt(g) % 2;

switch (s.length)
{
case 8 :
if (new Date() > d.setFullYear(d.getFullYear() + 19)) return false;
r = /^[/d]{8}$/;
if (!r.test(s)) return false;
if (s != t) return false;

break;
case 15 :
r = /^[/d]{15}$/;
if (!r.test(s)) return false;
if (s.substr(6, 6) != t.substr(2)) return false;
if (parseInt(s.charAt(14)) % 2 != g) return false;

break;
case 18 :
r = /^(?:[/d]{18}|[/d]{17}X)$/i;
if (!r.test(s)) return false;
if (s.substr(6, 8) != t) return false;
if (parseInt(s.charAt(16)) % 2 != g) return false;

var n = 0;
var w = new Array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2); // 加权因子
var c = new Array("1", "0", "X", "9", "8", "7", "6", "5", "4", "3", "2"); // 校验码

for (var i = 0; i < 17; i++)
{
n += parseInt(s.charAt(i)) * w[i];
}

if (s.charAt(17).toUpperCase() != c[n % 11]) return false;

break;
default :
return false;
}

return true;
}

function dblNum(n)
{
return parseInt(n) < 10 ? "0" + n : n;
}

//var sss = "422324860305482";
//Response.Write(checkIDCard(sss, "03/05/1986", 0));

使用Excel的函数批量判断身份证号码是否有效

使用Excel的函数批量判断身份证号码是否有效
  • tongyuehong
  • tongyuehong
  • 2014年12月27日 22:49
  • 3233

js实现完美身份证号有效性验证

最近需要对身份证合法性进行验证,实名验证是不指望了,不过原来的验证规则太过简单,只是简单的验证了身份证长度,现在业务需要加强下身份证验证规则,网上找到了不少资料,不过都不合偶的心意,无奈只好直接写一个...
  • zjslqshqz
  • zjslqshqz
  • 2017年06月22日 11:30
  • 678

用java对身份证号进行验证

身份证号码验证:start    /**        * 功能:身份证的有效验证        * @param IDStr 身份证号        * @return 有效:返回"" 无效...
  • swandragon
  • swandragon
  • 2015年02月07日 21:16
  • 1270

C# 身份证号码验证正则和验证函数

做身份证验证的时候要求能够按照标准18位身份证验证,普通正则表达式不能满足需求,所以在网上找到了这个函数,很好用,虽然还是有漏洞,不过一般乱填的号码都能被屏蔽掉 region 身份证验证函数(标准18...
  • width11
  • width11
  • 2016年11月26日 09:27
  • 245

Java验证身份证号是否合法

身份证作为居民的唯一标识。在很多系统中需要用户输入身份证号信息,今天我们就来编写一个方法验证身份证号的合法性。...
  • jianggujin
  • jianggujin
  • 2016年06月22日 11:26
  • 4661

java代码验证身份证号码经典版

package com.haier.hmms.util; import java.text.SimpleDateFormat; import java.util.Date; /**  * 验证...
  • suncaoyong
  • suncaoyong
  • 2013年03月07日 16:03
  • 15634

java身份证合法性校验

直接上代码,里面有测试类/** * 身份证前6位【ABCDEF】为行政区划数字代码(简称数字码)说明(参考《GB/T 2260-2007 中华人民共和国行政区划代码》): * 该数字码的编制原则和...
  • lib739449500
  • lib739449500
  • 2015年01月30日 13:47
  • 21083

JS严格校验身份证号

以下是根据身份证号码编码规则,使用JS对其进行有效性验证代码 var Wi = [ 7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2, 1 ];...
  • itmyhome
  • itmyhome
  • 2015年03月11日 21:18
  • 4797

php 身份证号15和18位验证

15和18位身份证号的验证代码为: /** * 验证身份证号 * @param [type] $idcard [身份证号码] */ public functi...
  • xiao_bai8
  • xiao_bai8
  • 2016年05月31日 10:56
  • 1996

Android 、Java 验证二代身份证号码是否正确

额~直接贴代码吧~当个工具类 已经验证过,包括尾字母是X(注意大写)的身份证号码。可放心使用。送一个限制Edittext只输入身份证号包含的字符 @Override ...
  • yuchen56
  • yuchen56
  • 2016年06月30日 11:46
  • 2822
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:身份证号码验证函数
举报原因:
原因补充:

(最多只允许输入30个字)