if (urlString.indexOf('http://') === 0 || urlString.indexOf('https://') === 0)
De esta forma, si se cumple alguna de las dos condiciones, será una url relativa.
Por otro lado, si se desea una solución más universal, que pueda utilizarse con cualquier protocolo, en el sentido amplio de ruta absoluta o ruta relativa, se debe recurrir a una expresión regular.
La expresión regular sería la siguiente:
var r = new RegExp('^(?:[a-z]+:)?//', 'i');
Esta expresión regular es más universal, independiente del protocolo y, con la ‘i’ del segundo parámetro, se le indica que no distinga entre mayúsculas y minúsculas. Esta expresión regular es la que define la estructura inicial de una ruta o URL absoluta.
La explicación de cada uno de los elementos de la expresión regular utilizada (^(?:[a-z]+:)?//) es la siguiente:
- ^ – comienzo de la cadena
- (?: – comienzo del grupo
- [a-z]+ – cualquier caracter entre ‘a’ y ‘z’, 1 ó más veces (+)
- : – cadena
- )? – fin del grupo, el cual puede aparecer una o ninguna vez
- // – cadena (dos barras)
- parámetro ‘i’ – no distinguir entre mayúsculas y minúsculas
A continuación, varios ejemplos de la utilización de la expresión regular para averiguar si una ruta o URL es absoluta o relativa en JavaScript, devolviendo true si es absoluta y false si es relativa.
r.test('http://ejemplo.com'); // true - URL absoluta típica del protocolo http r.test('HTTP://EJEMPLO.COM'); // true - URL absoluta del protocolo http en mayúsculas r.test('https://www.ejemplo.com'); // true - URL absoluta del protocolo https (secure http) r.test('ftp://ejemplo.com/fichero.txt'); // true - URL absoluta, protocolo FTP (file transfer protocol) r.test('//cdn.ejemplo.com/lib.js'); // true - URL absoluta, relativa al protocolo r.test('/directorio/prueba.txt'); // false - URL relativa r.test('test'); // false - URL relativa