开发者

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

I think the question title seems t开发者_如何学编程o explain eveything. I want to detect whether a string is in URL format or not using javascript.

Any help appreciated.


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


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

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

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


try something like this:

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


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.


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


You can use a regular expression for checking the string

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

Regular Expressions and Javascript


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!


When given the option, I prefer the simplest solution.

Use _.startsWith(string, 'http') if:

  • You don't mind if URL is invalid
  • You're sure the URL being checked will always start with 'http'
  • You don't expect the string to be another value that might start also with 'http'
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜