¿Qué caracteres hacen que una URL no sea válida?

¿Qué caracteres hacen que una URL no sea válida?

¿Son válidas estas URLs?

  • Ejemplo.com/archivo[/].html
  • http://example.com/file[/].html

En general, los URIs definidos por RFC 3986 (véase Sección 2: Caracteres) pueden contener cualquiera de los siguientes 84 caracteres:

ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-._~:/?#[]@!$&'()*+,;=

Tenga en cuenta que esta lista no indica en qué parte del URI pueden aparecer estos caracteres.

Cualquier otro carácter debe codificarse con la codificación porcentual (%hh). Cada parte de la URI tiene más restricciones sobre los caracteres que deben representarse con una palabra codificada en porcentaje.

Comentarios (25)

Todos los caracteres válidos que se pueden utilizar en una URI (una URL es un tipo de URI) se definen en RFC 3986.

Todos los demás caracteres pueden ser utilizados en una URL siempre que sean "codificados en la URL" primero. Esto implica cambiar el carácter no válido por "códigos" específicos (normalmente en forma del símbolo de porcentaje (%) seguido de un número hexadecimal).

Este enlace, HTML URL Encoding Reference, contiene una lista de las codificaciones para los caracteres no válidos.

Comentarios (1)

No es realmente una respuesta a su pregunta, pero la validación de url' s es realmente un p.i.t.a grave Probablemente sea mejor validar el nombre del dominio y dejar la parte de la consulta de la url. Esa es mi experiencia. También podrías recurrir a hacer ping a la url y ver si resulta en una respuesta válida pero eso podría ser demasiado para una tarea tan simple.

Las expresiones regulares para detectar url's son abundantes, búsquelas en Google :)

Comentarios (2)