Regex pour adresse IP

J'ai essayé ce code de validation de l'adresse IP, mais ça ne fonctionne pas...

public static bool IP(string ipStr)
{
    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 check = new Regex (pattern);
    bool valid = false;
    if (ipStr == "") {
        valid = false;
    } else {
        valid = check.IsMatch (ipStr, 0);
    }
    return valid;
}   

Aucune idée de quel est le problème?

  • "Aucune idée quel est le problème?" Pas jusqu'à ce que vous nous dites ce que "ne pas travailler" signifie.
  • Pourquoi besoin de regex pour valider la propriété intellectuelle? Un simple string.Split(), Int.Parse() le ferait.
  • vous avez besoin de clarifier CE qui ne fonctionne pas. J'ai construit un test pour cette regex, et il me semble saisir l'ip avec certains inhabituelle de regroupement, mais il fonctionne néanmoins.
  • Vous ne pouvez pas réaliste de valider une adresse IP avec une regex. 10.0, 172.16.0, 0177.00000.0x0.1, 0x7F000001, 017700000001, et 2130706433 sont tous des adresses IP valides à quelqu'un, alors que 4294967296 est clairement illégal. Par le temps que votre expression régulière est suffisante pour accepter 4294967295 et de rejeter 4294967297 vous n'êtes pas vraiment dans l'expression rationnelle de l'espace plus longtemps.
InformationsquelleAutor MojoDK | 2012-02-06