Sé que este mensaje ISN' Es nuevo, pero he probado varias de las soluciones propuestas y ninguna de ellas funciona tan bien como una que encontré gracias a un enlace proporcionado por Justin Jones. Tienen bastantes direcciones IP, pero esta es la parte superior de la lista y, al utilizar LinqPad (I LOVE LinqPad), la mayoría de las pruebas que he realizado funcionan muy bien.Yo recomiendo la utilización de éste en lugar de cualquiera de las expresiones proporcionadas anteriores:
^(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])$
Dale que un tiro en LINQPad con lo siguiente:
// \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.");
}
Con el nuevo RegEx esto no es válido que es correcta: 355.168.0.1 = Sin coincidencia, que es correcta como se indica en los comentarios.
Doy la bienvenida a los ajustes a esto ya que estoy trabajando en una herramienta que está haciendo uso de la expresión y siempre estoy buscando mejores formas de hacerlo.
ACTUALIZACIÓN: He creado un proyecto .NET Fiddle para proporcionar un ejemplo de trabajo de esta expresión junto con una lista de direcciones IP que prueban varios valores. Siéntete libre de jugar con él y prueba varios valores para ejercitar esta expresión y proporciona cualquier entrada si encuentras un caso donde la expresión falla. https://dotnetfiddle.net/JoBXdI
ACTUALIZACIÓN 2: Mejor aún referirse a este mensaje: Another related question.
Gracias y espero que esto ayude!
Dejando a un lado la expresión, ¿no debería estar mirando 'Regex.Matches' en lugar de' Split'? – Ani
posible duplicado de [¿Expresión regular para coincidir con el nombre de host o la dirección IP?] (Http://stackoverflow.com/questions/106179/regular-expression-to-match-hostname-or-ip-address) –
'999.999.999.999' ? – Andrey