<%
Function checkIDCard(idcard) '-1 は正しい ID カード、そうでない場合は不正な ID カードです
Dim Y、JYM
Dim S、M
薄暗いエリア
エリア = "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
'エリアチェック
If InStr(1, area, Mid(idcard, 1, 2)) = 0 then checkIDCard = 1: 関数終了
'ID 番号の桁数とフォーマットチェック
Case Len(idcard) を選択します
Case 15
If ((CInt(Mid(idcard, 7, 2)) 1900) Mod 4 = 0 または ((CInt(Mid(idcard, 7, 2)) 1900) Mod 100 = 0 And (CInt(Mid(idcard, 7, 2)) 1900) Mod 4 = 0)) 次に、
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}$" ';//生年月日の正当性をテストします
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}$" ';//生年月日の正当性をテストします
End If
If (ereg.test(idcard)) then
checkIDCard = -1
Else
checkIDCard = 2
End If
ケース 18
'//18 桁の ID 番号検出
'//生年月日の合法性チェック
If ((CInt(Mid ( idcard, 7, 2)) 1900) Mod 4 = 0 または ((CInt(Mid(idcard, 7, 2)) 1900) Mod 100 = 0 および (CInt(Mid(idcard, 7, 2)) 1900) Mod 4 = 0)) 次に、
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]$" ';/ / 閏年の生年月日を表す有効な正規表現
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]$" ';//通常の生年月日の正規表現
End If
If (ereg.test(idcard)) then
'//チェックデジットを計算
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(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%>