52 votes

RegEx pour une adresse IP

J'essaie d'extraire la valeur (adresse IP) du wan_ip avec ce code source : Qu'est-ce qui ne va pas ? Je suis sûr que le modèle RegEx est correct.

String input = @"var product_pic_fn=;var firmware_ver='20.02.024';var wan_ip='92.75.120.206';if (parent.location.href != window.location.href)";
Regex ip = new Regex(@"[\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b");
string[] result = ip.Split(input);

foreach (string bla in result)  
{
  Console.WriteLine(bla);                
}

Console.Read();

4 votes

L'expression mise à part, ne devriez-vous pas regarder Regex.Matches plutôt que Split ?

0 votes

7 votes

999.999.999.999 ?

3voto

manish Points 200
Regex.IsMatch(input, @"^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$")

3voto

Cordell Points 1511

Évitez d'utiliser /b - il autorise les caractères avant ou après l'IP
Par exemple ...198.192.168.12... était valide.

Utilice ^ y $ à la place si vous pouvez diviser l'entrée en morceaux qui isoleraient l'adresse IP.

     Regex regexIP = new Regex(@"^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$");

     if (regexIP.Match(textBoxIP.Text).Success){
         String myIP = textBoxIP.Text;
     }

Note ci-dessus ne validera pas les chiffres, comme indiqué au point 172. 316 .254.1 était vrai. Ceci ne vérifie que le formatage correct.


UPDATE : Pour valider le FORMATTING et les VALUES vous pouvez utiliser

     Regex regexIP = new Regex(@"^([01]?[0-9]?[0-9]|2[0-4][0-9]|25[0-5])\.([01]?[0-9]?[0-9]|2[0-4][0-9]|25[0-5])\.([01]?[0-9]?[0-9]|2[0-4][0-9]|25[0-5])\.([01]?[0-9]?[0-9]|2[0-4][0-9]|25[0-5])$");

     if (regexIP.Match(textBoxIP.Text).Success){
         String myIP = textBoxIP.Text;
     }

(note utilisant ([01]?[0-9]?[0-9]|2[0-4][0-9]|25[0-5]) pour chaque valeur numérique)
Crédit : https://stackoverflow.com/a/10682785/4480932

1voto

Denis Points 26

J'ai pris ce modèle de UrlAttribute.cs . dans l'espace de noms DataAnnotations. Comme vous pouvez le constater, je n'ai repris qu'une partie du modèle original de la source.

Regex.IsMatch(input, @"^(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-
9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-
9]\d|1\d\d|2[0-4]\d|25[0-5])$");

0voto

Cade Roux Points 53870

Je pense que tu dois te débarrasser de la [ - c'est un caractère perdu ou quoi ?

Regex(@" [ \b\d {1,3}. \d {1,3}. \d {1,3}. \d {1,3} \b ")

0voto

Adit Kothari Points 209

Regex(@" \A\d {1,3}. \d {1,3}. \d {1,3}. \d {1,3} \z "), essayez avec ceci

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X