特别收集一些身份证验证算法 根据身份证判断性别和生日

本文提供了一个通过身份证号码判断持有者性别及出生日期的实用脚本。该脚本支持15位和18位身份证号码,并对18位号码进行了有效性校验。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

特别收集一些身份证验证算法 根据身份证判断性别和生日

<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>

 

<%@ Page language="c#" Codebehind="CordBirthday.aspx.cs" AutoEventWireup="false" Inherits="CodeDatum.birthday.CordBirthday" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
 
<HEAD>
  
<title>CordBirthday</title>
  
<meta name="GENERATOR" Content="Microsoft Visual Studio .NET 7.1">
  
<meta name="CODE_LANGUAGE" Content="C#">
  
<meta name="vs_defaultClientScript" content="JavaScript">
  
<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
  
<script language="javascript">
function showBirthday(val)
  {
   
var birthdayValue;
   
if(15==val.length)
   { 
//15位身份证号码
    birthdayValue = val.charAt(6)+val.charAt(7);
    
if(parseInt(birthdayValue)<10)
    {
     birthdayValue 
= '20'+birthdayValue;
    }
    
else
    {
     birthdayValue 
= '19'+birthdayValue;
    }
    birthdayValue
=birthdayValue+'-'+val.charAt(8)+val.charAt(9)+'-'+val.charAt(10)+val.charAt(11);
    
if(parseInt(val.charAt(14)/2)*2!=val.charAt(14))
     document.all.sex.value
='';
    
else
     document.all.sex.value
='';
    document.all.birthday.value
=birthdayValue;
   }
   
if(18==val.length)
   { 
//18位身份证号码
    birthdayValue=val.charAt(6)+val.charAt(7)+val.charAt(8)+val.charAt(9)+'-'+val.charAt(10)+val.charAt(11)  

   
+'-'+val.charAt(12)+val.charAt(13);
    
if(parseInt(val.charAt(16)/2)*2!=val.charAt(16))
     document.all.sex.value
='';
    
else
     document.all.sex.value
='';
    
if(val.charAt(17)!=IDCard(val))
    {
     document.all.idCard.style.backgroundColor
='#ffc8c8';
    }
    
else
    {
     document.all.idCard.style.backgroundColor
='white';
    }
    document.all.birthday.value
=birthdayValue;
   }
  }

  
// 18位身份证号最后一位校验
  function IDCard(Num)
  {
   
if (Num.length!=18)
    
return false;
   
var x=0;
   
var y='';

   
for(i=18;i>=2;i--)
    x 
= x + (square(2,(i-1))%11)*parseInt(Num.charAt(19-i-1));
   x
%=11;
   y
=12-x;
   
if (x==0)
    y
='1';
   
if (x==1)
    y
='0';
   
if (x==2)
    y
='X';
   
return y;
  }

  
// 求得x的y次方
  function square(x,y)
  {
   
var i=1;
   
for (j=1;j<=y;j++)
    i
*=x;
   
return i;
  }
</script>
 
</HEAD>
 
<body MS_POSITIONING="GridLayout">
  
<form id="Form1" method="post" runat="server">
   
<table align="center">
    
<tr>
     
<td align="center">身份证:<input type="text" name="idCard" id="idCard"></td>
    
</tr>
    
<tr>
     
<td align="center">性    别:<input type="text" name="sex" id="sex"></td>
    
</tr>
    
<tr>
     
<td align="center">生    日:<input type="text" name="birthday" id="birthday"></td>
    
</tr>
    
<tr>
     
<td align="center"><input type="button" onclick="showBirthday(document.all.idCard.value)" value="OK"></td>
    
</tr>
   
</table>
  
</form>
 
</body>
</HTML>
 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值