Tengo una expresión regular para validar direcciones IP y nombres de dominio que ha funcionado bien hasta ahora
/** Checks if a URL is valid */ export function isValidURL(str: string): boolean { var pattern = new RegExp( '^(https?:\\/\\/)?' + // protocol '((([az\\d]([az\\d-]*[az\\d])*)\\.)+[az]{2,}|' + // domain name '((\\d{1,3}\\.){3}\\d{1,3}))' + // OR ip (v4) address '(\\:\\d+)?(\\/[-az\\d%_.~+]*)*' + // port and path '(\\?[;&a-z\\d%_.~+=-]*)?' + // query string '(\\#[-az\\d_]*)?$', 'i' ); // fragment locator return !!pattern.test(str); }El problema es cuando uso un nombre de usuario y una contraseña, se rompe.
http://admin:admin@192.168.92.106:5500/api/v1/
¿Hay alguna solución que pase la URL como válida si se incluye un nombre de usuario y una contraseña en la URL?
Solo necesita agregar una nueva línea para el patrón de usuario/pase después de su patrón de "protocolo". ¿Cuáles son los requisitos para los nombres de usuario y las contraseñas?
Uno simple se vería así (se supone que los nombres de usuario son solo letras y números):
(\w+?:.+@)?La respuesta con la ayuda de @ejkeep
/** Checks if a URL is valid */ export function isValidURL(str: string): boolean { var pattern = new RegExp( '^(https?:\\/\\/)?' + // protocol '(\\w+?:.+@)?' + // username and password '((([az\\d]([az\\d-]*[az\\d])*)\\.)+[az]{2,}|' + // domain name '((\\d{1,3}\\.){3}\\d{1,3}))' + // OR ip (v4) address '(\\:\\d+)?(\\/[-az\\d%_.~+]*)*' + // port and path '(\\?[;&a-z\\d%_.~+=-]*)?' + // query string '(\\#[-az\\d_]*)?$', 'i' ); // fragment locator return !!pattern.test(str); }