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

Man*_*ish 17 javascript url

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

任何帮助赞赏.

Mar*_*man 48

试试这个-

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

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


小智 11

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);
 }
Run Code Online (Sandbox Code Playgroud)

正则表达式可视化

Debuggex演示(与'localhost'匹配的改进版本)

  • 非常好.'https | http | ftp ...'可写得更短=>'https?| ftp ......' (2认同)

Ant*_*ney 9

尝试这样的事情:

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


Sam*_*gan 6

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

const isUrl = (str) => {
  try {
    new URL(str);
    return true;
  } catch () {
    return false;  
  }
}
Run Code Online (Sandbox Code Playgroud)

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

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