' 函数名 :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