验证传入的身份证号是否有效

   ' 函数名  :CheckCIDInfo  
   ' 函数功能:验证传入的身份证号是否有效(18位)
   ' 传入参数:18位的身份证号码
   ' 返回值  :所属地区,出生年月,男女
   ' 制作人  :zzz
   ' 制作日期:2007-04-10
   ' 说  明  :无
   ' ================================================================================================
   Public   Function  CheckCIDInfo(ByVal CID  As   String As   String
    
Dim  aCity()  As   String   =  { Nothing Nothing Nothing Nothing Nothing Nothing Nothing , _
                             
Nothing Nothing Nothing Nothing " 北京 " " 天津  " " 河北 " , _
                             
" 山西 " " 内蒙古 " Nothing Nothing Nothing Nothing Nothing , _
                             
" 辽宁 " " 吉林 " " 黑龙江 " Nothing Nothing Nothing Nothing , _
                             
Nothing Nothing Nothing " 上海 " " 江苏 " " 浙江 " " 安微 " " 福建 " , _
                             
" 江西 " " 山东 " Nothing Nothing Nothing " 河南 " " 湖北 " " 湖南 " , _
                             
" 广东 " " 广西 " " 海南 " Nothing Nothing Nothing " 重庆 " " 四川 " , _
                             
" 贵州 " " 云南 " " 西藏 " Nothing Nothing Nothing Nothing , _
                             
Nothing Nothing " 陕西 " " 甘肃 " " 青海 " " 宁夏 " " 新疆 " , _
                             
Nothing Nothing Nothing Nothing Nothing " 台湾 " Nothing , _
                             
Nothing Nothing Nothing Nothing Nothing Nothing Nothing , _
                             
Nothing " 香港 " " 澳门 " Nothing Nothing Nothing Nothing , _
                             
Nothing Nothing Nothing Nothing " 国外 " }
    
Dim  iSum  As   Double   =   0
    
Dim  info  As   String   =   ""
    
Dim  rg  As   New  System.Text.RegularExpressions.Regex( " ^d{17}(d|x)$ " )
    
Dim  mc  As  System.Text.RegularExpressions.Match
    mc 
=  rg.Match(CID)
    
If   Not  mc.Success  Then
      CheckCIDInfo 
=   ""
    
End   If
    CID 
=  CID.ToLower
    CID 
=  CID.Replace( " x " " a " )
    
If  aCity(Convert.ToInt16(CID.Substring( 0 2 )))  Is   Nothing   Then
      CheckCIDInfo 
=   " 非法地区 "
    
End   If
    Try
      Convert.ToDateTime(CID.Substring(
6 4 &   " - "   &  CID.Substring( 10 2 &   " - "   &  CID.Substring( 12 2 ))
      
Dim  i  As  Int16
      
For  i  =   17   To   0  Step  - 1
        iSum 
+=  (System.Math.Pow( 2 , i)  Mod   11 *   Integer .Parse(CID.Substring( 17   -  i,  1 ).ToString(), System.Globalization.NumberStyles.HexNumber)
      
Next
      
If  iSum  Mod   11   <>   1   Then
        CheckCIDInfo 
=   " 非法证号 "
      
Else
        CheckCIDInfo 
=  (aCity( Integer .Parse(CID.Substring( 0 2 )))  +   " , "   +  CID.Substring( 6 4 +   " - "   +  CID.Substring( 10 2 +   " - "   +  CID.Substring( 12 2 +   " , "   +  (IIf( Integer .Parse(CID.Substring( 16 1 ))  Mod   2   =   1 " " " " )))
      
End   If
    Catch ex 
As  Exception
      Throw 
New  Exception( " 不正确的出生日期! "   &  ex.ToString)
      CheckCIDInfo 
=   ""
    
End  Try
  
End Function
 
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值