Prireikė kažkada padaryt paprastą IP adresų tikrinimą. .NET turi apibrėžtą klasę IPAddress, kurios statinis metodas TryParse(string IP, out IPAddress adress) kaip ir atlieka tai, ko man reikia. Mano naudotas metodas:

private bool isValidIPAddress(string ip)
{
    IPAddress address;
    return IPAddress.TryParse(ip, address);
}

Tačiau atsirado problema, jeigu paduodamas visai ne IP adresas.

Pavyzdžiui, jeigu ip=”4.159.211″, tai aš gaunu teigiamą rezultatą, tai yra true. Pasirodo, šis IP yra labai įdomiai “suparsinamas”. Rezultate kintamasis address = “4.159.0.211″.

Galiausiai atsisakiau šio metodo naudojimo ir grįžau prie paprasto regex’o:

public bool IsValidIPAddress(string ip)
{
    string pattern = @"^([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])
(\.([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])){3}$";
    Regex reg = new Regex(pattern, RegexOptions.Singleline | RegexOptions.ExplicitCapture);
    return reg.IsMatch(ip);
}

Išvada: nepasitikėt viskuo aklai :)

Dalinkis ir Mėgaukis:
  • Digg
  • Sphinn
  • del.icio.us
  • Facebook
  • Mixx
  • Google Bookmarks