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
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
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.