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.
10 svar · 629 visningar · startad av peterbladh
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!
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.
Tack för tipset!
Fast jag vill nog gärna få regex-varianten att fungera, om inte annat ur utbildningssyfte!
//peter
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";
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.
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?
(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?)
tackar! :)
Använd Acceptera slutgiltigt svar för att andra lätt kan hitta svar ;D
Peter S skrev:
Kursivering av mig.
Vad är anledningen/-arna till det – prestanda och semantik?
Kort och gott - ja.
/G