Avatar billede angelenglen Nybegynder
25. september 2014 - 12:10 Der er 5 kommentarer og
1 løsning

VB.NET regex-valider streng for bestemt mønster

Jeg har en String variabel, der enten kan være tom, indeholde en slags GUID, eller indeholde noget tekst.

Jeg har derfor brug for at kunne evaluere, om variablens værdi stemmer overens med et mønster for en GUID.

Her er et par eksempler på GUID's:

2c342f82-83d2-42a3-8e59-ab0fa357023a
bff33caa-46b7-4343-847d-68fb7173a114
3d1c1a23-cb78-45a8-bc28-90a38259c624
1222fe0f-7e9b-4d3c-b520-55dc80d5f6a3


Som det relativt tydeligt fremgår, er mønstret:

8 karakterer
1 bindestreg
4 karakterer
1 bindestreg
4 karakterer
1 bindestreg
4 karakterer
1 bindestreg
12 karakterer

Karakterer er hex-værdier, dvs. en af følgende karakterer: 0123456789abcdef

Det er dog ikke super kritisk at der bliver tjekket for om det er en hex-værdi - tjek for at det er tal eller bogstaver er rigeligt.

Jeg har tidligere valideret at noget fx skal være tal / bogstaver / - / \ - Men det er altså ikke lykkedes mig at finde frem til det pattern der er nødvendigt her :-(

Her er mit eksempel vedr. ovennævnte:
Dim regex As New System.Text.RegularExpressions.Regex("^[a-z0-9\\-]*$", System.Text.RegularExpressions.RegexOptions.IgnoreCase)
If regex.IsMatch(strCheck) = False Then
    Return "Indholdet skal bestå af tal, bogstaver, bindestreger eller backslashes."
End If


Håber det giver mening :-)
Avatar billede erikjacobsen Ekspert
25. september 2014 - 13:12 #1
Jeg vil tro dette virker

^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$
Avatar billede arne_v Ekspert
26. september 2014 - 03:12 #2
Jep.

Et alternativ kunne vaere Guid.TryParse ...
Avatar billede angelenglen Nybegynder
26. september 2014 - 13:43 #3
Erik's pattern virkede i hvert fald.

Jeg prøver den anden hvis jeg får tid :-)

Jeg kan se at Erik ikke ønsker points, så læg et svar Arne_v :-)
Avatar billede arne_v Ekspert
27. september 2014 - 01:55 #4
Nej tak - det var jo ikke min loesning.
Avatar billede angelenglen Nybegynder
27. september 2014 - 16:35 #5
Fair nok, følte mig bare lidt gavmild :-D
Avatar billede angelenglen Nybegynder
01. oktober 2014 - 15:23 #6
Jeg endte forresten med at bruge Guid.TryParse, eftersom det giver en lidt pænere kode.

Men begge muligheder fungerede efter hensigten.

If Guid.TryParse(strResponse, Nothing) Then
    ' Do stuff...
Else
    ' Not valid Guid, do other stuff...
End If
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

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