Programación Web y Scripting > ASP
Validar Direccion Ip
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
[#] Página Siguiente
Ir a la versión completa