Regulärer Ausdruck für die 7 Ziffern gefolgt von einem optionalen 3 Buchstaben
Ich bin neu in regulären Ausdrücken, und ich bin versucht zu validieren Erhalt zahlen in unserer Datenbank mit einem regulären Ausdruck.
Unserer Einnahmen kommen können in den folgenden Formaten:
- 0123456 (Manditory sieben Ziffern, nicht mehr, nicht weniger)
- 0126456a (Manditory sieben Ziffern mit einem Buchstaben (a-z)
- 0126456ab (Manditory sieben Ziffern mit zwei Buchstaben von a-z)
- 0126456abc (Manditory sieben Ziffern mit drei Buchstaben von a-z)
Habe ich versucht, mit einer Reihe von verschiedenen regex-Kombinationen, aber keiner scheint zu funktionieren. Jetzt habe ich:
(\d)(\d)(\d)(\d)(\d)(\d)(\d)([a-z])?([a-z])?([a-z])?
Aber das ist so für mehr als sieben Ziffern und ist damit mehr als 3 Buchstaben.
Hier ist mein VBA-Funktion in Access 2010, die überprüft, ob der Ausdruck:
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
Du musst angemeldet sein, um einen Kommentar abzugeben.
Müssen Sie wahrscheinlich verwenden Sie Ankern an den enden. Weitere regex kann vereinfacht werden zu: -
\d{7}
entspricht genau7 digits
. Sie brauchen nicht zu verwenden\d
7mal für, die.
{0,3}
erstellt eine Auswahl, und passt 0 zu 3 Wiederholung der vorangegangenen Muster,Caret(^)
entspricht dem Anfang der ZeileDollar($)
entspricht dem Ende der Zeile.^(\d){7}[a-z]{0,3}$
gut funktionieren könnte. Die^
und$
entsprechen die start-und end-of-line bzw.Möchten Sie vielleicht, um sicherzustellen, dass Sie übereinstimmen, wird die gesamte Zeichenfolge, mit Hilfe von Ankern.
Können Sie vereinfachen außerdem die regex. Erste, Sie brauchen nicht all diese Klammern.
Können, können Sie auch verwenden, begrenzt die Wiederholung, um zu verhindern, dass die Wiederholung selbst.
Wo
{7}
bedeutet 'genau 7 mal', und{0,3}
bedeutet "0-3 mal'.