Check if a JavaScript string is a URL Check if a JavaScript string is a URL javascript javascript

Check if a JavaScript string is a URL


If you want to check whether a string is valid HTTP URL, you can use URL constructor (it will throw on malformed string):

function isValidHttpUrl(string) {  let url;    try {    url = new URL(string);  } catch (_) {    return false;    }  return url.protocol === "http:" || url.protocol === "https:";}

Note that per RFC 3886, URL must begin with a scheme (not limited to http/https), e. g.:

  • www.example.com is not valid URL (missing scheme)
  • javascript:void(0) is valid URL, although not an HTTP one
  • http://.. is valid URL with the host being .. (whether it resolves depends on your DNS)
  • https://example..com is valid URL, same as above


A related question with an answer:

Javascript regex URL matching

Or this Regexp from Devshed:

function validURL(str) {  var pattern = new RegExp('^(https?:\\/\\/)?'+ // protocol    '((([a-z\\d]([a-z\\d-]*[a-z\\d])*)\\.)+[a-z]{2,}|'+ // domain name    '((\\d{1,3}\\.){3}\\d{1,3}))'+ // OR ip (v4) address    '(\\:\\d+)?(\\/[-a-z\\d%_.~+]*)*'+ // port and path    '(\\?[;&a-z\\d%_.~+=-]*)?'+ // query string    '(\\#[-a-z\\d_]*)?$','i'); // fragment locator  return !!pattern.test(str);}


function isURL(str) {  var pattern = new RegExp('^(https?:\\/\\/)?'+ // protocol  '((([a-z\\d]([a-z\\d-]*[a-z\\d])*)\\.?)+[a-z]{2,}|'+ // domain name  '((\\d{1,3}\\.){3}\\d{1,3}))'+ // OR ip (v4) address  '(\\:\\d+)?(\\/[-a-z\\d%_.~+]*)*'+ // port and path  '(\\?[;&a-z\\d%_.~+=-]*)?'+ // query string  '(\\#[-a-z\\d_]*)?$','i'); // fragment locator  return pattern.test(str);}