How to detect whether a string is in URL format using javascript?

前端 未结 7 1792
轻奢々
轻奢々 2020-12-18 19:52

I think the question title seems to explain eveything. I want to detect whether a string is in URL format or not using javascript.

Any help appreciated.

相关标签:
7条回答
  • 2020-12-18 20:30

    One for the future using the URL constructor and a basic try catch statement, it is supported in most modern browsers. Obviously no IE support...

    const isUrl = (str) => {
      try {
        new URL(str);
        return true;
      } catch () {
        return false;  
      }
    }
    

    If the URL is valid it will get parsed by the constructor and return true.

    If the string is not a valid URL the constructor will chuck a syntax error that will get caught and return false.

    0 讨论(0)
  • 2020-12-18 20:31

    Try this code. This expression is more complete and takes into account IP address:

    function checkUrl(s) {
         var regexp = /^(?:http(s)?:\/\/)?[\w.-]+(?:\.[\w\.-]+)+[\w\-\._~:/?#[\]@!\$&'\(\)\*\+,;=.]+$/
         return regexp.test(s); }
    
    0 讨论(0)
  • 2020-12-18 20:35

    You can use a regular expression for checking the string

    ^s?https?:\/\/[-_.!~*'()a-zA-Z0-9;\/?:\@&=+\$,%#]+$  
    

    Regular Expressions and Javascript

    0 讨论(0)
  • 2020-12-18 20:36
    function IsURL(url) {
    
        var strRegex = "^((https|http|ftp|rtsp|mms)?://)"
            + "?(([0-9a-z_!~*'().&=+$%-]+: )?[0-9a-z_!~*'().&=+$%-]+@)?" //ftp的user@
            + "(([0-9]{1,3}\.){3}[0-9]{1,3}" // IP形式的URL- 199.194.52.184
            + "|" // 允许IP和DOMAIN(域名)
            + "([0-9a-z_!~*'()-]+\.)*" // 域名- www.
            + "([0-9a-z][0-9a-z-]{0,61})?[0-9a-z]\." // 二级域名
            + "[a-z]{2,6})" // first level domain- .com or .museum
            + "(:[0-9]{1,4})?" // 端口- :80
            + "((/?)|" // a slash isn't required if there is no file name
            + "(/[0-9a-z_!~*'().;?:@&=+$,%#-]+)+/?)$";
         var re=new RegExp(strRegex);
         return re.test(url);
     }
    

    Regular expression visualization

    Debuggex Demo (Improved version which matches also 'localhost')

    0 讨论(0)
  • 2020-12-18 20:42

    Had the same task, but all of regex that I found online to check validity of a URL were failed in some test cases.

    Here is the regex that worked everything:

    /^(http:\/\/www\.|https:\/\/www\.|www\.)?[a-z0-9]+([\-\.]{1}[a-z0-9]+)*\.[a-z]{2,5}(:[0-9]{1,5})?(\/.*)?/
    

    However, If the URL was like: google.com It accepted it as valid (which in my specific case, was considered as invalid)

    It worked the best I had found. Worked like a charm!

    0 讨论(0)
  • 2020-12-18 20:49

    Try this-

    function isUrl(s) {
       var regexp = /(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/
       return regexp.test(s);
    }
    

    usage: if (isUrl("http://www.page.com")) alert("is correct") else alert("not correct");

    0 讨论(0)
提交回复
热议问题