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();
Le [
ne devrait pas être au début de votre modèle. En outre, vous voudrez probablement utiliser Matches(...)
.
Essayer:
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");
MatchCollection result = ip.Matches(input);
Console.WriteLine(result[0]);
Très vieux message, vous devriez utiliser la solution acceptée, mais envisagez d'utiliser le bon RegEx pour une adresse IPV4:
((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)
Si vous voulez éviter les caractères spéciaux après ou avant, vous pouvez utiliser:
^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$
Essaye ça:
Match match = Regex.Match(input, @"\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}");
if (match.Success)
{
Console.WriteLine(match.Value);
}
Si jamais vous vous trouvez à la recherche d'une expression régulière particulière, http://regexlib.com/ contient de nombreux RegEx au format bibliothèque.
Regex.IsMatch(input, @"^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$")
Évitez d'utiliser /b
- il autorise les caractères avant ou après l'adresse IP.
Par exemple, ...198.192.168.12...
était valide.
Utilisez plutôt ^
et $
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;
}
Remarque ci-dessus ne validera pas les chiffres, comme indiqué 172 .316 .254.1 était vrai. Cela ne fait que vérifier que le formatage est correct.
UPDATE: Pour valider le formatage et les valeurs, 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;
}
(notez en utilisant ([01]?[0-9]?[0-9]|2[0-4][0-9]|25[0-5])
pour chaque valeur numérique)
Credit: https://stackoverflow.com/a/10682785/4480932
Si vous voulez juste vérifier l’adresse IP, utilisez IPAddress.TryParse
using System.Net;
bool isIP(string Host)
{
IPAddress ip;
return IPAddress.TryParse(Host, out ip);
}
Je sais que ce poste n’est pas nouveau, mais j’ai essayé plusieurs des solutions proposées et aucune d’entre elles ne fonctionne aussi bien que celle que j’ai trouvée grâce au lien fourni par Justin Jones. Ils en ont quelques-uns pour l'adresse IP, mais c'est le haut de la liste. Avec LinqPad (I LOVE LinqPad), la plupart des tests que j'ai effectués fonctionnent extrêmement bien. Je recommande d'utiliser celui-ci plutôt que l'une des expressions fournies précédemment:
^(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9])\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[0-9])$
Donnez un coup de feu dans LinqPad avec ce qui suit:
// \b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b 355.168.0.1 = 355.168.0.1 (Not Correct)
// ((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?) 355.168.0.1 = 55.168.0.1 (Not correct)
// \d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3} 355.168.0.1 = 355.168.0.1 (Not Correct)
// ^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$ 355.168.0.1 = 355.168.0.1 (Not Correct)
// ^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$ 355.168.0.1 = 355.168.0.1 (Not Correct)
// ^(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9])\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[0-9])$ 355.168.0.1 = No Match (Correct)
Match match = Regex.Match("355.168.0.1", @"^(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9])\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[0-9])$");
if (match.Success) {
Console.WriteLine(match.Value);
}
else {
Console.WriteLine("No match.");
}
Avec le nouveau RegEx, ce n'est pas valide, ce qui est correct: 355.168.0.1 = No Match, ce qui est correct, comme indiqué dans les commentaires.
J'apprécie tout ajustement car je travaille sur un outil qui utilise l'expression et qui cherche toujours de meilleures façons de le faire.
UPDATE: j'ai créé un projet .NET Fiddle pour fournir un exemple de travail de cette expression, ainsi qu'une liste d'adresses IP testant diverses valeurs. N'hésitez pas à le bricoler et à essayer différentes valeurs pour exercer cette expression et fournir des informations si vous trouvez un cas où l'expression échoue. https://dotnetfiddle.net/JoBXdI
UPDATE 2: Mieux encore, reportez-vous à ce message: Une autre question connexe.
Merci et j'espère que cela aide!
J'ai pris ce modèle de UrlAttribute.cs . à l'espace de noms DataAnnotations. Comme vous le voyez peut-être, je n’ai pris qu’un extrait du motif original.
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])$");
Regex (@ "\ A\d {1,3}.\D {1,3}.\D {1,3}.\D {1,3}\z") essayez avec ceci
Je pense que vous devez vous débarrasser du [- est-ce un personnage errant ou quoi?
Regex (@ " [\ b\d {1,3}.\D {1,3}.\D {1,3}.\D {1,3}\b")
(\d{1,3}\.){3}(\d{1,3})[^\d\.]
Vérifie ça. Cela devrait fonctionner parfaitement
Sembra che tu abbia un estraneo[all'inizio del tuo modèle regex.