We are using the URL ↗️ API to check if a passed string is valid or not.
The first try/catch will immediately catch if the string is a valid URL or not, if it is not, it will throw an error like Uncaught TypeError: URL constructor: string is not a valid URL
. In such a case, we would return false
in the catch block
In case it’s a valid URL, the last line checks if it’s a valid HTTP/HTTPS URL.
Note: This method has no false negatives (as far as I know) but does have some false positives
Some examples of false positives could be http://..
or http:/a
which are considered valid URLs, even though the DNS might not resolve for these URLs, you can read the RFC 3986 ↗️ for more details.
Nevertheless, I would prefer to use this over the complex Regex which could potentially break the internet ↗️