Coincidencia correcta con una URL de IDN

Necesito ayuda para crear una expresión regular que pueda coincidir correctamente con una URL dentro del texto libre.

esquemaUno de los siguientes:ftp, http, https (esftps un protocolo?)Opcionalusuario (y opcionalpasar)anfitrión (con soporte para IDNs)apoyo parawww ysubdominio (s) (con soporte para IDNs)filtrado básico de TLDs ([a-zA-Z]{2,6} es suficiente creoOpcionalPuerto númerocamino (opcional, con soporte para caracteres Unicode)consulta (opcional, con soporte para caracteres Unicode)fragmento (opcional, con soporte para caracteres Unicode)

Esto es lo que podría averiguar sobre los subdominios:

Un "subdominio" expresa dependencia relativa, no dependencia absoluta: por ejemplo, wikipedia.org comprende un subdominio del dominio org, y en.wikipedia.org comprende un subdominio del dominio wikipedia.org. En teoría, esta subdivisión puede bajar a 127 niveles de profundidad, y cada etiqueta DNS puede contener hasta 63 caracteres, siempre que el nombre de dominio completo no exceda una longitud total de 255 caracteres.

Respecto al nombre de dominio en sí, no pude encontrar ninguna fuente confiable, pero creo que la expresión regularpara no-IDNs (No estoy seguro de cómo escribir una versión compatible con IDN) es algo como:

[0-9a-zA-Z][0-9a-zA-Z\-]{2,62}

¿Puede alguien ayudarme con esta expresión regular o indicarme una buena dirección?

Respuestas a la pregunta(3)

Su respuesta a la pregunta