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.
Vous devez vous connecter pour publier un commentaire.
Je voudrais utiliser
IPAddress.TryParse
méthode statique à la place.IPAddress.TryParse("2130706433", out ip);
etIPAddress.TryParse("0x7f000001", out ip);
sont, par exemple, une autre représentation pour127.0.0.1
"127.0.0.1"
et typoed, il ne pourra pas, sauf qu'ils se rater toutes les trois points - très peu probable. Si ils entrent dans un bidon de valeur comme "1", et ça ne fonctionne pas "normalement", je voudrais suggérer à vos utilisateurs arrêter la saisie de fausses valeurs.pour le match valide l'adresse IP utiliser
au lieu de
parce que beaucoup de moteur d'expressions régulières correspondent à la première possibilité dans la séquence OU
vous pouvez tenter votre moteur d'expressions régulières : 10.48.0.200
tester la différence ici
Il y a un déjà répondu à la question disponible pour une adresse IP valide.
Que pour le débogage des expressions régulières, sur Windows, je vous le recommande chaudement Expresso. Sur le web, il y a une Flash testeur disponibles.
Je ne suis pas vraiment une regex expert en soi, mais j'utilise Expresso (une expression régulière de l'outil) et il a sa propre bibliothèque regex pour le pré-définir des scénarios de ce genre.
Essayez cette ci-dessous.
Pour CIDR format à la fois ipv4 et ipv6
http://blog.markhatton.co.uk/2011/03/15/regular-expressions-for-ip-addresses-cidr-ranges-and-hostnames/
Voici la regex pour vérifier tous les possibles adresses IPv4 (décimale, parsemé hexadécimal, en pointillés octal, décimal, hexadécimal, octal et en mode mixte)
Je l'ai testé avec toutes les adresses possibles.