Avatar billede skuumm Nybegynder
16. marts 2005 - 11:48 Der er 9 kommentarer og
1 løsning

Validering af IP og MAC adresse

Hvordan valideres der nemmest for om en streng er opbygget som en IP adresse ("xxx.yyy.zzz.vvv") eller mac adresse ("xx-xx-xx-xx-xx-xx") ?

MAC adresse: 6 x 2 tegn (0-9 og a-d) adskilt af bindestreg

IP adresse : 4 x 1-3 tegn (0-9) adskilt af puntum. hver "blok" skal have en minimunsværdi på "001" og Maksimum på "254"
Avatar billede soreno Praktikant
16. marts 2005 - 12:14 #1
Mac-addr er nem:
[0-9a-f][0-9a-f]-[0-9a-f][0-9a-f]-[0-9a-f][0-9a-f]-[0-9a-f][0-9a-f]-[0-9a-f][0-9a-f]-[0-9a-f][0-9a-f]

[0-9a-f] beskriver et hexadecimalt symbol. Det er muligt du skal rette a-f med A-F hvis det er store bogstaver der benyttes.
Så er det bare at indsætte seperatortegn på rette plads.
Avatar billede roenving Novice
16. marts 2005 - 12:24 #2
Tjah, jeg ville være lidt dovnere med mac-adressen:

([0-9a-f]{2}-){5}[0-9a-f]{2}

-- ip-adressen bliver lidt mere tricky:

(([01]?\d?\d|2[0-4]\d|25[0-5])\.){3}([01]?\d?\d|2[0-4]\d|25[0-5])

-- hvorfor angiver du minimum på 1 og max på 254 ?-)
Avatar billede skuumm Nybegynder
16. marts 2005 - 13:07 #3
roenving: Ang. min/max værdi, en IP adresse kan IKKE indeholde værdier over 254/255 da hver blok representere et binært tal...
Avatar billede roenving Novice
16. marts 2005 - 13:23 #4
Ja, en ip-adresse er i virkeligheden et 32-bit binært tal, som for nemheds skyld vises i enkelt bytes (og i den gældende IPv4-standard i decimal-tal !-)

-- hver af disse 4 tal kan derfor tage værdier fra 0 til 255 ...
Avatar billede skuumm Nybegynder
16. marts 2005 - 13:47 #5
Der er et problem med ovenstående. hvis jeg tester "1_0.101.102.103"  med ovenstående så melder den MATCH.. hvilket IKKE er hensigten. Dette eksempel skal melde FALSK
Avatar billede roenving Novice
16. marts 2005 - 13:58 #6
Sæt start og slut på:

^ ... $
Avatar billede skuumm Nybegynder
16. marts 2005 - 14:02 #7
Hehe, nu er jeg ikke verdensmester til dette reg exp..... gider du uddybe?
Avatar billede skuumm Nybegynder
16. marts 2005 - 14:06 #8
Dette udtryk ser ud til at fungere:

^(([01]?\d?\d|2[0-4]\d|25[0-5])\.){3}([01]?\d?\d|2[0-4]\d|25[0-5])$


TAK for hjælpen

Smid et svar for points
Avatar billede roenving Novice
16. marts 2005 - 15:42 #9
Velbekomme '-)
Avatar billede roenving Novice
17. marts 2005 - 15:20 #10
-- og tak for point ;~}
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
Kurser inden for grundlæggende programmering

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