我对正则表达式还不熟悉,我正在尝试使用正则表达式验证我们数据库中的收据号码。
我们的收据可以采用以下格式:0123456(必须是七位数字,不能多也不能少)
0126456a(必须是七位数字和一个小写字母a-z)
0126456ab(必须是七位数字和两个小写字母a-z)
0126456abc(必须是七位数字和三个小写字母a-z)
我已经尝试了许多不同的正则表达式组合,但没有一种能够正常工作。目前我使用的是:
我们的收据可以采用以下格式:
(\d)(\d)(\d)(\d)(\d)(\d)(\d)([a-z])?([a-z])?([a-z])?
但是这允许超过七位数字,并允许超过3个字母。
以下是我在Access 2010中的VBA函数,将验证表达式:
Function ValidateReceiptNumber(ByVal sReceipt As String) As Boolean
If (Len(sReceipt) = 0) Then
ValidateReceiptNumber = False
Exit Function
End If
Dim oRegularExpression As RegExp
' Sets the regular expression object
Set oRegularExpression = New RegExp
With oRegularExpression
' Sets the regular expression pattern
.Pattern = "(\d)(\d)(\d)(\d)(\d)(\d)(\d)([a-z])?([a-z])?([a-z])?"
' Ignores case
.IgnoreCase = True
' Test Receipt string
ValidateReceiptNumber = .Test(sReceipt)
End With
End Function