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 = rg.Match(cid)
If Not mc.Success Then
Return ""
End If
cid = cid.ToLower()
cid = cid.Replace("x", "a")
If aCity(Integer.Parse(cid.Substring(0, 2))) Is Nothing Then
Return "非法地区"
End If
If IsDate((cid.Substring(6, 4) + "-" + cid.Substring(10, 2) + "-" + cid.Substring(12, 2))) = False Then
Return "非法生日"
End If
Dim i As Integer
For i = 17 To 0 Step -1
iSum += (System.Math.Pow(2, i) Mod 11) * Integer.Parse(cid(17 - i).ToString, System.Globalization.NumberStyles.HexNumber)
Next i
If iSum Mod 11 <> 1 Then
Return "非法证号"
End If
Return 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 Function