webForumDet fria alternativet

regex och ipnummer

.NET

10 svar · 629 visningar · startad av peterbladh

Medlem sedan juni 2000277 inlägg
Frågan#1

Hej,

jag hittade följande kod på vbcity.com men får den inte att fungera (match blir false även om det är en korrekt ipadress):

...

string pattern = @"^\b([0]?)\.(25[0-5]/2[0-4][0-9]/[01]?[0-9][0-9]?)\.(25[0-5]/2[0-4][0-9]/[01]?[0-9][0-9]?)\.(25[0-5]/2[0-4][0-9]/[01]?[0-9][0-9]?)\b";
if(!Regex.IsMatch(ip, pattern))
{
    MessageBox.Show("'" + ip + "'", "Fel");
}

Nån som ser vad som är fel? Jag har knappt jobbat med regular expressions tidigare så jag vet inte om det är fel i själva uttrycket eller i c#-koden...

Tack på förhand!

Medlem sedan dec. 20025 483 inlägg
#2

Du kanske vill testa GetHostEntry() istället?

Genom att använda ett try/catch-block verkar det enkelt att bestämma huruvida den inmatade strängen är en giltig IP-adress.

Medlem sedan juni 2000277 inlägg
#3

Tack för tipset!

Fast jag vill nog gärna få regex-varianten att fungera, om inte annat ur utbildningssyfte!

//peter

Medlem sedan dec. 20025 483 inlägg
#4

Jag förstår inte hur mönstret i ditt exempel skulle kunna fungera. Möjligtvis skall '/' bytas mot '|'. Dessutom verkar det som att den första byten endast får vara en nolla.

string pattern = @"^\b(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b";
Medlem sedan dec. 19996 721 inlägg
#5

Peter S skrev:

Du kanske vill testa GetHostEntry() istället?

Genom att använda ett try/catch-block verkar det enkelt att bestämma huruvida den inmatade strängen är en giltig IP-adress.

Även om det en är fungerande princip, som jag själv skulle kunna tänkas utnyttja, så måste det ändå sägas att try/catch inte ska användas som valideringsmekanism.

Medlem sedan dec. 20025 483 inlägg
#6

emission skrev:

Även om det en är fungerande princip, som jag själv skulle kunna tänkas utnyttja, så måste det ändå sägas att try/catch inte ska användas som valideringsmekanism.

Kursivering av mig.

Vad är anledningen/-arna till det – prestanda och semantik?

Medlem sedan juni 20019 519 inlägg
#7
(2[0-4]\d|25[0-5]|[01]?\d\d?)\.(2[0-4]\d|25[0-5]|[01]?\d\d?)\.(2[0-4]\d|25[0-5]|[01]?\d\d?)\.(2[0-4]\d|25[0-5]|[01]?\d\d?)
Medlem sedan juni 2000277 inlägg
#8

tackar! :)

Medlem sedan juni 20019 519 inlägg
#9

Använd Acceptera slutgiltigt svar för att andra lätt kan hitta svar ;D

Medlem sedan dec. 19996 721 inlägg
#10

Peter S skrev:

Kursivering av mig.

Vad är anledningen/-arna till det – prestanda och semantik?

Kort och gott - ja.

/G

Medlem sedan dec. 20025 483 inlägg
#11

emission skrev:

Kort och gott - ja.

/G

Alrighty! :bire

252 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
128 ms — deklarationer (db)
0 ms — hämta statistik (cache)
121 ms — hämta tråd, inlägg och bilagor (db)
124 ms — ändringar (db)