Nedenstående funktion returnerer false, hvis der er fejl. Den returnerer true, hvis tekststrengen s er ok. function f(s) dim i const tegn="abcdefghijklmnopqrstuvwxyz0123456789,-./?" for i=1 to len(s) if InStr(tegn,Mid(s,i,1)= 0 then f=false exit function end if next f=true end function
Function Tjek(Streng) Dim myReg Set myReg = New RegExp myReg.IgnoreCase = True myReg.Pattern = "^[a-z0-9\-\,\.\?\/]{1,}$" Tjek = myReg.Test(Streng) End Function
fortsat forbedring: function f(s) dim i,t t=Lcase(s) const tegn="abcdefghijklmnopqrstuvwxyz0123456789,-./\?" for i=1 to len(t) if InStr(tegn,Mid(t,i,1)= 0 then f=false exit function end if next f=true end function
Den er hurtigere og mere fleksibel. Regular Expressions er designet netop til bl.a. at udføre den slags validering, således at det ikke er nødvendigt at køre løkker og kalde funktioner (som InStr) en helvedes masse gange.
Det var sådan set heller ikke for at nedgøre hverken nmh's løsning eller dit valg. Jeg savnede bare en begrundelse for, at dit valg faldt på den.
RegExp eller ej. Det er da rigtigt at det er mere effektivt at bruge RegExp. Men i dette tilfælde er det vist hip som hap, med mindre du har rigtig mange lange tekststrenge, du skal håndtere. (Funktionen InStr er faktisk ret effektiv).
Jeg ser blot ingen grund til IKKE at bruge RegExp.
Synes godt om
Ny brugerNybegynder
Din løsning...
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.