Discussion:
Expresión regular para patrón IP
(demasiado antiguo para responder)
Buki*
2005-04-27 06:24:00 UTC
Permalink
Hola colegas,

Quiero validar el formato de una IP mediante una expresión regular y la
función eregi:

if ( !eregi(PATRON_IP, $ip) ) //Formato de IP no válida.

Donde PATRON_IP lo he definido como expresión regular (Posix) de la forma:

[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+

El problema es que yo de expresiones regulares sé bastante poco y esta
expresión falla a veces.

Lo único que quiero comprobar es que sean 4 grupos de uno o más digitos
numéricos separados por 3 puntos, de la forma X.X.X.X (no me importan que
sean superiores a 255).

Incluso me vale con únicamente comprobar si en la cadena hay 3 puntos.

¿Sabe alguien cómo hacerlo con una expresión regular que sea lo más simple
posible?

Gracias y salu2.

Buki.
Khertz
2005-04-27 07:16:12 UTC
Permalink
...validar...una IP mediante una expresión regular y la función eregi...
¿Sabe alguien cómo hacerlo con una expresión regular que sea lo más simple
posible?
También puedes utilizar la función *preg_match*
(http://es.php.net/preg_match), en la propia página de la documentación hay
varias propuestas y correcciones de los usuarios, y se podría sacar algo
así:

function ip_valida($dir_ip) {
$num="([0-9]|[0-9]{2}|1\d\d|2[0-4]\d|25[0-5])";

if (preg_match("/^$num\.$num\.$num\.$num$/",$dir_ip)) {
return true;
else
return false;
}
}

Cada parte de la expresión regular sería:

[0-9] => números 0-9
[0-9]{2} => números 00-99
1\d\d => números 100-199
2[0-4]\d => números 200-249
25[0-5] => números 250-255

Un saludo
--
Pablo Chinea
pkhertz-@rroba-yahoo.es
Tenerife - España
Alvaro G Vicario
2005-04-27 07:51:47 UTC
Permalink
Post by Buki*
Quiero validar el formato de una IP mediante una expresión regular
Yo lo haría con ip2long(), yo no la he probado con este propósito pero
tiene buena pinta.
Creo que en general son más flexibles y rápidas las expresiones regulares
compatibles con Perl, es decir, preg_match y demás familia.
Post by Buki*
[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+
Bueno, falla por dos cosas:

1) No fijas un rango de números así que da 9999.9999.9999.9999 por buena

2) Sólo pides una subcadena así que pepito1.1.1.1tralari la da por buena
Post by Buki*
Lo único que quiero comprobar es que sean 4 grupos de uno o más digitos
numéricos separados por 3 puntos, de la forma X.X.X.X (no me importan que
sean superiores a 255).
Yo diría que...

^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$

No lo he probado.
--
-- Álvaro G. Vicario - Burgos, Spain
-- http://bits.demogracia.com - Mi sitio sobre programación web
-- Don't e-mail me your questions, post them to the group
--
Buki*
2005-04-28 09:21:18 UTC
Permalink
Post by Alvaro G Vicario
Post by Buki*
[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+
1) No fijas un rango de números así que da 9999.9999.9999.9999 por buena
2) Sólo pides una subcadena así que pepito1.1.1.1tralari la da por buena
Post by Buki*
Lo único que quiero comprobar es que sean 4 grupos de uno o más digitos
numéricos separados por 3 puntos, de la forma X.X.X.X (no me importan que
sean superiores a 255).
Yo diría que...
^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$
No lo he probado.
Ok Khertz y Alvaro, muchas gracias.

Voy a probar esa última a ver que tal.

Y después a lo siguiente: cómo saber si una url es correcta (en otro post).

Salu2.

Buki.
Alvaro G Vicario
2005-04-28 09:40:25 UTC
Permalink
Post by Buki*
Y después a lo siguiente: cómo saber si una url es correcta (en otro post).
Descargándolo. Y aun así fallaría si el servidor remoto está caído
temporalmente.
--
-- Álvaro G. Vicario - Burgos, Spain
-- http://bits.demogracia.com - Mi sitio sobre programación web
-- Don't e-mail me your questions, post them to the group
--
Continúe leyendo en narkive:
Loading...