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); };