如何使用javascript检测字符串是否为URL格式?

时间:2009-11-09 15:49:14

标签: javascript url

我认为问题标题似乎解释了一切。 我想使用javascript检测字符串是否为URL格式。

任何帮助表示感谢。

7 个答案:

答案 0 :(得分:46)

试试这个 -

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

用法:if(isUrl(“http://www.page.com”))警告(“是正确的”)否则   警告(“不正确”);

答案 1 :(得分:10)

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')

答案 2 :(得分:9)

尝试这样的事情:

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

答案 3 :(得分:2)

未来使用URL constructor和基本的try catch语句,大多数现代浏览器都支持它。显然没有IE支持......

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

如果URL有效,它将被构造函数解析并返回true。

如果字符串不是有效的URL,构造函数将会发现一个语法错误,该错误将被捕获并返回false。

答案 4 :(得分:2)

试试这段代码。此表达式更完整,并考虑了IP地址:

function checkUrl(s) {
     var regexp = /^(?:http(s)?:\/\/)?[\w.-]+(?:\.[\w\.-]+)+[\w\-\._~:/?#[\]@!\$&'\(\)\*\+,;=.]+$/
     return regexp.test(s); }

答案 5 :(得分:1)

您可以使用正则表达式检查字符串

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

Regular Expressions and Javascript

答案 6 :(得分:0)

具有相同的任务,但是在某些测试用例中,我在网上找到的用于检查URL有效性的所有正则表达式均失败。

以下是可正常使用的正则表达式:

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

但是,如果该URL类似于: google.com ,则该URL被接受为有效(在我的特定情况下,该URL被视为无效

它表现得最好。像魅力一样工作!