Regex para URLs [Completa]

Esta regex sirve para verificar urls completas con protocolo, subdominio, dominio, superdominio, ruta y queryString

Regexr Example

var urlRegex = /(\w+):\/\/(([\w]+)@|(\w+):(\w+)@|)((.*)\.|)([\w\-]+)\.((\w{3}\.\w{2})|(\w{3}))(:([0-9]+)|)\/(([\w\/\.]+|)(\?([\w\=\%\&]+)|)(\#(.*)|)|)/

Con los siguientes datos y sus respectivos indices:
DatoIndice
Protocolo$1
Usuario$3 | $4
Contraseña$5
Subdominio$7
Dominio$8
Superdominio$9
Puerto$13
Ruta$15
Cadena de Consulta$16
Fragmento$19