25. februar 2009 - 09:37Der er
5 kommentarer og 1 løsning
RegularExpression
Jeg sidder og roder lidt med regular expressions i Access - det virker sådan set meget godt, men jeg kan ikke gennemskue hvordan jeg laver en expression der tager højde for: et tal skal være på 12 cifre, de første 4 cifre skal være 0044, 0045 eller 0047
Teknologi, AI og forretning er i centrum på Computerworlds Cloud og AI Festival i København d. 18. og 19. september. Se hele programmet for den store konference om strategisk brug af Cloud og AI på: www.cloud-festival.dk
Private Sub felt1_BeforeUpdate(Cancel As Integer) Select Case Left(felt1, 4) Case Is <> "0044" MsgBox Left(felt1, 4) & " er forkert start på data" Case Is <> "0045" MsgBox Left(felt1, 4) & " er forkert start på data" Case Is <> "0047" MsgBox Left(felt1, 4) & " er forkert start på data" End Select End Sub
Det eneste er at den også godtager 0046, men det kan jeg leve med.
mugs> personligt synes jeg det er lidt 'smartere' at have en generel rutine til check af indtastninger der bare returnerer true eller false for om den er OK - man skal kune lige finde den rigtige pattern.
Følgende funktion søger i en streng efter det angivne mønster og returnerer det fundne eller en tom streng.
Public Function fhpRegular_Expression_Find(strString_Search As String, strPattern As String) As String ' ----------------------------------------------------------------------------------- ' Purpose : Check a string for a regular expression ' Parameters : ' Returns : String ' Created : 07-08-2008 ' Modified : ' Remarks : Set reference to 'Microsoft VBScript Regular Expression 5.5' ' ----------------------------------------------------------------------------------- On Error GoTo Error_fhpRegular_Expression_Find Dim rxRegExp As RegExp Dim rxMatches As MatchCollection Dim rxMatch As Match Dim strResult As String
Set rxRegExp = New RegExp
rxRegExp.IgnoreCase = True 'Upper and lower is OK rxRegExp.Global = False 'True = all matches False = first match only rxRegExp.Pattern = strPattern
Set rxMatches = rxRegExp.Execute(strString_Search)
For Each rxMatch In rxMatches strResult = (rxMatch.Value) Next
Set rxRegExp = Nothing
Exit_fhpRegular_Expression_Find: fhpRegular_Expression_Find = strResult Exit Function
Error_fhpRegular_Expression_Find: strResult = "" Select Case Err.Number Case 3021 Case 2501 Case Is < 0 Case Else MsgBox Err.Number & ": " & Err.Description, vbOKOnly + vbCritical, "Error in procedure 'fhpRegular_Expression_Find'" End Select Resume Exit_fhpRegular_Expression_Find
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.