Programación Web y Scripting > ASP

 Validar Direccion Ip

(1/2) > >>

franc:
¿ Conoceis algun metodo para validar direciones IP ?
del tipo xxx.xxx.xxx.xxx dondelas xxx pueden tomar valores hasta 255 y pueden haber x que se omitan por ser la primera x de cada grupo y además ser cero ( ej. 195.2.0.254 )

He buscado por todas partes y no hay forma de encontrar un RegExp que resuelva esto, ¿ alguien puede ayudarme ?

gracias

jpaler:
mira compañero, aqui tengo uno q lo acabo de hacer, pero
lo hice en java (EL MEJOR LENGUAJE DE PROGRAMACION DEL MUNDO):
...,aki te dejo para q lo pases a ASP...listo:


--- Código: Text ---     /**     * Este metodo devuelve true si la direccion ip pasada como parametro     * es valida o false en caso contrario     * @param dir String     * @return boolean     */    public static boolean esUnaDireccionIPValida( String dir ) {        //En java un StringTokenizer es una version mejorada del String        //  q permite darle formato a las cadenas. Al llamar el constructor        //  y pasar por ej. la direccion="255.192.168.1" y el String punto "." lo q        //  hago es separar la ip y dejar a st={"255","192","168","1"}        StringTokenizer st = new StringTokenizer( dir, "." );         //ahora verifico q si el tamaño de st no es 4, osea, los 4 numeros        //  q debe tener toda direcicon ip, digo q esta mal la direccion ip.        if ( st.countTokens() != 4 ) {            return false;        }                //ahora sigo verificando, y le digo a st con el metodo nextTokens()        //  q me de uno por uno sus elementos, es decir, los 4 numeros de las        //  de la direcicon ip. Luego verifo q el numero tenga solo 1 o 3 digitos y        //  q este entre 0 y 255. Y listo, eso es todo.        while ( st.hasMoreTokens() ) {            String nro = st.nextToken();            if ( ( nro.length() > 3 ) || ( nro.length() < 1 ) ) {                return false;            }            int nroInt = 0;            try {                nroInt = Integer.parseInt( nro );            }            catch ( NumberFormatException s ) {                return false;            }            if ( ( nroInt < 0 ) || ( nroInt > 255 ) ) {                return false;            }        }        return true;    }  
Si tienes alguna duda, no hay problema... solo la comentas y listo.
Espero y te sirva...
salu2 !!!

tonilope:
Yo me hice este en C (posiblemente el mejor lenguaje de la historia :P) hace ya bastante:


--- Código: Text --- int compruebaIP(char *ip){   char octeto[4];  int contador, j, valida, num;    contador=0;  valida=1;  num=0;   while(contador<=strlen(ip) && valida)      {    j=0;      while(ip[contador]!='.' && j<3 && ip[contador]!='\0' && valida)          {       if(ip[contador]>=48 && ip[contador]<=57 )                         octeto[j++]=ip[contador++];      else            valida=0;         }     octeto[j]='\0';      if(j>0 && (ip[contador]=='.' || ip[contador]=='\0') && atoi(octeto)<=255 && atoi(octeto)>=0)                        num++;    else         valida=0;       contador++;   }    if(num!=4)                  valida=0;    return(valida); }  
1º) Comprueba que sólo haya cifras en cada octeto (como máximo 3 cifras por octeto).

2º) Comprueba que el octeto esté entre 0 y 255.

3º) Comprueba que la Ip tenga exactamente 4 octetos.

Si pasa los 3 filtros, la IP es válida.

Salu2 ;)

ROBER.29:
Hola,

No he probado la función que te acabo de hacer porque no tengo tiempo, pero creo que si que te funcionará, pruebala y me cuentas.


--- Código: Text --- 'Esta función recibe como parámetro el valor de la IP que se tiene que validar (Ej: 192.168.2.25) 'y devuelve True en el caso de que la IP sea correcta y False en caso de que sea errónea.Function validarIP (ValorIP)  Set objRegExp = New RegExp  objRegExp.Pattern = "^(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])$"  objRegExp.IgnoreCase = True  objRegExp.Global = True  If Not objRegExp.Test(ValorIP) Then    validarIP = False  Else    validarIP = True  End IfEnd Function   
Ejemplo de como se utilizaría


--- Código: Text --- If validarIP("192.168.2.25") Then  response.write "IP Correcta."Else  response.write "IP Errónea."End If  
Espero que te sirva.

Un saludo.

franc:
gracias a todos, me ha venido muy bien vuestros codigos,

un saludo

Navegación

[0] Índice de Mensajes

[#] Página Siguiente

Ir a la versión completa