«

»

jun 19 2013

Verificar si un String es una URL válida

Muchas veces nos encontramos con el problema de tener que validar una url introducida por el usuario o leída de alguna fuente de datos y no siempre lo conseguimos sin perder mucho tiempo en el proceso, nosotros os traemos en este artículo una forma muy sencilla de hacerlo y que es compatible con cualquier versión de Android.

Con esta función podéis tener la seguridad de que cualquier texto que le paséis será correctamente validado y sólo os devolverá true si es una url válida:

private static boolean isUrl(String s) {
	String regex = "^(https?://)?(([\\w!~*'().&=+$%-]+: )?[\\w!~*'().&=+$%-]+@)?(([0-9]{1,3}\\.){3}[0-9]{1,3}|([\\w!~*'()-]+\\.)*([\\w^-][\\w-]{0,61})?[\\w]\\.[a-z]{2,6})(:[0-9]{1,4})?((/*)|(/+[\\w!~*'().;?:@&=+$,%#-]+)+/*)$";

	try {
		Pattern patt = Pattern.compile(regex);
		Matcher matcher = patt.matcher(s);
		return matcher.matches();

	} catch (RuntimeException e) {
		return false;
	}
}

Como podéis ver toda la carga de trabajo se la dejamos a la expresión regular y para verificar si una url es válida tan sólo debemos llamar a la función de la siguiente manera:

Boolean isValid = isUrl("http://androcode.es");

Como nota os comento que con este método podréis validar urls con protocolo (http o https) o sin él, así como con un dominio de cualquier nivel.

Notice

Este código está basado en la expresión regular que nos ofrece Mohamed Faramawi en su blog.

Acerca del autor

Kix2902

Programador vocacional, geek y twittero de pro. Cofundador de @RedInput. Y sobre todo Fandroid moderado.