Avatar billede websam Nybegynder
04. marts 2006 - 08:18 Der er 16 kommentarer og
1 løsning

Regular expresions der ikke helt virker ?

Hejsa ,

jeg har lavet følgende regular expresion men den retunere True uanset om det er matcher :

Dim strRegex As String = "[\d_a-zA-Z]{4,12}"
Dim Re As New Regex(strRegex)
If Not Re.IsMatch(objInfo.Text) Then
    Return False
Else
    Return True
End If

Der er sikkert kun tale om en mindre fejl ;o)
Avatar billede websam Nybegynder
04. marts 2006 - 08:21 #1
Mit forsøg er forresten kun at tillade tal 0-9 små og store bogstaver a-z, A-Z og der skal være minimum 4 max 12 ;o)

/Websam
Avatar billede websam Nybegynder
04. marts 2006 - 08:22 #2
og så lige tegnet _ dethavde jeg glemt ;o)
Avatar billede Slettet bruger
04. marts 2006 - 08:34 #3
Du mangler bare noget anchor til linie start ^og linie slut $ så din regex skal se sådan her ud:

^[\d_a-zA-Z]{4,12}$

On another note: Du kunne med fordel skrive lidt om på den kode så du fjerner IMHO mærkeligt login omkirng if of return:

Dim strRegex As String = "^[\d_a-zA-Z]{4,12}$"
Dim Re As New Regex(strRegex)

Return (Re.IsMatch(objInfo.Text))
Avatar billede websam Nybegynder
04. marts 2006 - 08:41 #4
Return (Re.IsMatch(objInfo.Text)) vil så retunere True el. False ?
Avatar billede Slettet bruger
04. marts 2006 - 08:45 #5
Den returnerer True hvis der er et match og False hvis der ikke er et match.

Hvis du prøver at afkode din if-sætning fungerer det sådan her.

Hvis IsMatch er ikke True, altså False, så skal der returneres False ellers skal der returneres True.

Derfor kan du bare returnerer den bool som IsMatch returnerer uden at gøre noget ved den.
Avatar billede websam Nybegynder
04. marts 2006 - 08:46 #6
Men uanset hvad så retunere den stadigvæk kun True selvom jeg laver en streng der ikke ville kunne valideres til True, "test-om'det_virker"
Avatar billede Slettet bruger
04. marts 2006 - 08:48 #7
Har du ændret regex med anchors som jeg skrev i svaret ??
Avatar billede websam Nybegynder
04. marts 2006 - 08:49 #8
"test-om'det_virker" skulle jo så retunere False og det gør den ikke ?
Avatar billede websam Nybegynder
04. marts 2006 - 08:49 #9
Den ser nu sådan her ud :

Dim strRegex As String = "^[\d_a-zA-Z]{4,12}$"
Dim Re As New Regex(strRegex)
Return (Re.IsMatch(objInfo.Text))
Avatar billede Slettet bruger
04. marts 2006 - 08:54 #10
Prøv lige denne her

Return Regex.IsMatch(objInfo.Text, "^[\d_a-zA-Z]{4,12}$");


Nu er jeg ikke så skarp på VB.NET strings men er \ en escape i VB strings? I C# ville ovenstående string skulle skrives "^[\\d_a-zA-Z]{4,12}$" eller @"^[\d_a-zA-Z]{4,12}$"
Avatar billede brynil Nybegynder
04. marts 2006 - 08:56 #11
Den første fungerer hos mig. Bortset fra at jeg ikke kan bruge Return af værdi i en Sub.
Avatar billede websam Nybegynder
04. marts 2006 - 08:59 #12
Det prøver jeg lige, men jeg kan fortælle at denne til at validere en email med virker fint :

Dim strRegex As String = "^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3} \.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)"
Avatar billede Slettet bruger
04. marts 2006 - 09:02 #13
jamen så kan vi vel udelukke at det er stringen der skal se anderleves ud. Men ellers prøv denne her den har under alle omstændigheder ikke det problem.

^[0-9_a-zA-Z]{4,12}$
Avatar billede websam Nybegynder
04. marts 2006 - 09:05 #14
ja hov det havde lige ikke svaret på \ er ikke escape i VB, men jeg tror det var en () der skulle til :

"^([\d_a-zA-Z]{4,12})$"

Det ser i hvertfald ud til at virke ;o)
Avatar billede websam Nybegynder
04. marts 2006 - 09:06 #15
Jeg får i hvertfald følgende udskrevet :

test_virker'ikke = False
test_virker = True
Avatar billede Slettet bruger
04. marts 2006 - 09:07 #16
super
Avatar billede websam Nybegynder
04. marts 2006 - 09:11 #17
Så må jeg jo bare huske at der skal () omkring og kigger jeg på den til email er der jo oxo det på den så det er vel bare sådan en morgenting *GGG*
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester