25. juli 2003 - 19:21Der er
4 kommentarer og 1 løsning
RegExp på streng
Jeg skal have valideret en streng, som indeholder et ønsket brugernavn. Der er dog nogle meget præcise krav til hvilke tegn brugernavnet må indeholder.
Må indeholde... - store og små bogstaver fra a til å. - tal fra 0 til 9 (alle tal). - punktum, men maks. ét - mellemrum, men ikke 2 eller flere mellemrum efter hinanden.
Da jeg bruger trim() behøver den ikke undersøge for mellemrum som start og slut på brugernavn.
Sandhedsudtrykket skal anvendes i nedenstående funktion, hvor ??? skal erstattes af er RegExp-udtryk. Funktionen returnerer False eller True afhængig af om strengen/brugernavnet opfylder alle krav.
Function valUsername(ByVal sInput) Dim oRegexp, sPattern, fIgnoreCase fIgnoreCase = False sPattern = "???" Set oRegExp = New RegExp oRegExp.Pattern = sPattern oRegExp.IgnoreCase = fIgnoreCase valUsername = oRegExp.Test(Trim(sInput)) Set oRegExp = Nothing End Function
Jeg ved ikke om du kan få bygget det hele i samme pattern men ellers kan du jo lave functionen sådan her så den tjekker på mellemrum og punktum for sig og så tjekker om regular expression om det er gyldige karakter der indgår:
<% Function valUsername(ByVal sInput) strOk = true str = Trim(sInput)
'Tjek for mere end et punktum: arr=split(str,".") if ubound(arr) > 1 then strOk = false set arr = Nothing
'Tejk på om der er to mellemrum efter hinadnen if inStr(1,str," ") > 0 then strOk = false
'Tjek for om stregen indeholder a-å 0-9 mellemrum eller punktum Dim ianRegEx Set ianRegEx = New RegExp ianRegEx.Pattern = "^[a-z0-9æøå\x20\.]+$" ianRegEx.Global = True ianRegEx.IgnoreCase = true if ianRegEx.Test(str) = false then strOk = false set ianRegEx = nothing
valUsername = strOK End Function
var = "brugn.adf avn" if valUsername(var) then 'Ok brugernavn Response.Write "Ok" else 'ikke ok Response.Write "Ikke ok" end if %>
\xN hvor N her er 32, er en hexidecimal ascii karakter man kan angive og 32 er hex værdien for et mellemrum.
Jeg kom lige til at tænke på man kan jo lave et patterne som tjekker om der er dobbelt --, __ eller mellemrum i set det for det med inStr:
Så funktionen bliver:
Function valUsername(ByVal sInput) strOk = true str = Trim(sInput)
'Tjek for mere end et punktum: arr=split(str,".") if ubound(arr) > 1 then strOk = false set arr = Nothing
'Tjek for om stregen indeholder a-å 0-9 mellemrum eller punktum Dim ianRegEx Set ianRegEx = New RegExp ianRegEx.Pattern = "^[a-z0-9æøå\x20\._-]+$" ianRegEx.Global = True ianRegEx.IgnoreCase = true if ianRegEx.Test(str) = false then strOk = false
'Tjek om der er dobbelt __, mellemrum, eller -- ianRegEx.Pattern = "(__|\x20\x20|--)" if ianRegEx.Test(str) = true then strOk = false set ianRegEx = nothing
Kan du i øvrigt anbefale nogle links, hvor jeg kan læse mere om emnet?
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.