diff --git a/docker-compose.yml b/docker-compose.yml index b4e02b7..4266560 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -4,5 +4,5 @@ services: container_name: Web-Check image: lissy93/web-check ports: - - 8888:8888 + - 3000:3000 restart: unless-stopped diff --git a/src/utils/address-type-checker.ts b/src/utils/address-type-checker.ts index 51003cb..a792f87 100644 --- a/src/utils/address-type-checker.ts +++ b/src/utils/address-type-checker.ts @@ -7,13 +7,12 @@ export type AddressType = 'ipV4' | 'ipV6' | 'url' | 'err' | 'empt'; /* Checks if a given string looks like a URL */ const isUrl = (value: string):boolean => { - const urlPattern = new RegExp( - '^(https?:\\/\\/)?' + - '(?!([0-9]{1,3}\\.){3}[0-9]{1,3})' + // Exclude IP addresses - '(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\\-]*[a-zA-Z0-9])\\.)*' + // Domain name or a subdomain - '([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\\-]*[A-Za-z0-9])$', // Second level domain - 'i' // Case-insensitive - ); + var urlPattern = new RegExp('^(https?:\\/\\/)?'+ // validate protocol + '((([a-z\\d]([a-z\\d-]*[a-z\\d])*)\\.)+[a-z]{2,}|'+ // validate domain name + '((\\d{1,3}\\.){3}\\d{1,3}))'+ // validate OR ip (v4) address + '(\\:\\d+)?(\\/[-a-z\\d%_.~+]*)*'+ // validate port and path + '(\\?[;&a-z\\d%_.~+=-]*)?'+ // validate query string + '(\\#[-a-z\\d_]*)?$','i'); // validate fragment locator return urlPattern.test(value); };