The specific code is as follows:
1. Use javascript to verify:
2. Verify by asp code:
<%
Function checkIDCard(idcard) '-1 is the correct ID card, otherwise it is an illegal ID card
Dim Y, JYM
Dim S, M
Dim area
area = "11,12,13,14,15,21,22,23,31,32,33,34,35,36,37,41,42,43,44, 45,46,50,51,52,53,54,61,62,63,64,65,71,81,82,91"
Dim ereg
Set ereg = New regexp
'Area check
If InStr(1, area, Mid(idcard, 1, 2)) = 0 Then checkIDCard = 1: Exit Function
'ID number digits and format check
Select Case Len(idcard)
Case 15
If ((CInt(Mid(idcard, 7, 2)) 1900) Mod 4 = 0 or ((CInt(Mid(idcard, 7, 2)) 1900) Mod 100 = 0 And (CInt(Mid(idcard, 7, 2)) 1900) Mod 4 = 0)) Then
ereg.Pattern = "^[1-9][0-9]{5}[0- 9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04 |06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|[1-2][0-9])) [0-9]{3}$" ';//Test the legality of birth date
Else
ereg.Pattern = "^[1-9][0-9]{5}[0-9 ]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04| 06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|1[0-9]|2[0-8] ))[0-9]{3}$" ';//Test the legality of birth date
End If
If (ereg.test(idcard)) Then
checkIDCard = -1
Else
checkIDCard = 2
End If
Case 18
'//18-digit identity number detection
'//Date of birth legality check
If ((CInt(Mid( idcard, 7, 2)) 1900) Mod 4 = 0 or ((CInt(Mid(idcard, 7, 2)) 1900) Mod 100 = 0 And (CInt(Mid(idcard, 7, 2)) 1900) Mod 4 = 0)) Then
ereg.Pattern = "^[1-9][0-9]{5}19[0-9]{2}((01|03|05|07|08|10| 12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2 ][0-9]|30)|02(0[1-9]|[1-2][0-9]))[0-9]{3}[0-9Xx]$" ';// Legal regular expression for birth date in leap year
Else
ereg.Pattern = "^[1-9][0-9]{5}19[0-9]{2}((01|03| 05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1 -9]|[1-2][0-9]|30)|02(0[1-9]|1[0-9]|2[0-8]))[0-9]{3} [0-9Xx]$" ';//The legal regular expression of birth date in ordinary years
End If
If (ereg.test(idcard)) Then
'//Calculate check digit
S = (CInt(Mid(idcard, 0 1, 1)) CInt(Mid(idcard, 10 1, 1))) * 7 _
(CInt(Mid(idcard, 1 1, 1)) CInt( Mid(idcard, 11 1, 1))) * 9 _
(CInt(Mid(idcard, 2 1, 1)) CInt(Mid(idcard, 12 1, 1))) * 10 _
( CInt(Mid(idcard, 3 1, 1)) CInt(Mid(idcard, 13 1, 1))) * 5 _
(CInt(Mid(idcard, 4 1, 1)) CInt(Mid(idcard, 14 1, 1))) * 8 _
(CInt(Mid(idcard, 5 1, 1)) CInt(Mid(idcard, 15 1, 1))) * 4 _
(CInt(Mid( idcard, 6 1, 1)) CInt(Mid(idcard, 16 1, 1))) * 2 _
CInt(Mid(idcard, 7 1, 1)) * 1 _
CInt(Mid(idcard , 8 1, 1)) * 6 _
CInt(Mid(idcard, 9 1, 1)) * 3
Y = S Mod 11
M = "F"
JYM = "10X98765432 "
M = Mid(JYM, Y 1, 1)
If (M = Mid(idcard, 17 1, 1)) Then checkIDCard = -1 Else checkIDCard = 3
Else
checkIDCard = 4
End If
Case Else
checkIDCard = Len(idcard)
End Select
End Function%>