在VBA Access中验证字符串格式

Mar*_*460 4 regex string ms-access vba

  • 我想编写一个布尔函数来检查医疗补助ID是否为所需格式.
  • 即2个字母字符后跟5个数字后跟1个字母字符.
  • 如果Medicaid ID不可用,则应在文本框中手动输入99999999.

所以它是9999999或所需的Medicaid格式化字符串返回值True.

样品:

AZ12345Z
NP54321J
EM17345P

到目前为止,我有2个功能一起工作,但我弄乱了逻辑!!

谢谢

Public Function isAlpha(cChar As Integer) As Boolean
'returns true if its a alphabetic character
    isAlpha = IIf((cChar >= 65 And cChar <= 90) Or (cChar >= 97 And cChar <= 122), True, False)   
End Function

Public Function CheckMedicaidIDFormat(strMedicaidID As String) As Boolean
    Dim blnResult As Boolean
    If strMedicaidID = "99999999" or If Len(strMedicaidID) = 8 And isAlpha(Left(strMedicaidID, 2)) = True And IsNumeric(Mid(strMedicaidID, 3, 5)) = True And isAlpha(Right(strMedicaidID, 1)) = True Then 

        blnResult = True
    Else
        blnResult = False
    End If
    CheckMecicaidIDFormat = blnResult
End Function
Run Code Online (Sandbox Code Playgroud)

chr*_*sen 6

虽然RegEx对于这类问题是一个很好的通用解决方案,但在这种情况下,可以进行简单的Like比较

Function IsValid(strIn As String) As Boolean
    IsValid = (strIn Like "[A-Z][A-Z]#####[A-Z]") Or strIn = "99999999"
End Function
Run Code Online (Sandbox Code Playgroud)