在javascript中使用regexp验证url

在javascript中使用regexp验证url,javascript,php,regex,Javascript,Php,Regex,我有一个字符串要验证它是否是有效的url。 我在谷歌上搜索过,我只能在url包含http或https时找到解决方案 我想使url成为有效的,即使它的域名前面不包含http示例->www.google.com 这些是我尝试过的一些URL,它们确实有效 http://blog.mattheworiordan.com/post/13174566389/url-regular-expression-for-links-with-or-without-the http://stackoverflow.co

我有一个字符串要验证它是否是有效的url。 我在谷歌上搜索过,我只能在url包含http或https时找到解决方案

我想使url成为有效的,即使它的域名前面不包含http示例->www.google.com

这些是我尝试过的一些URL,它们确实有效

http://blog.mattheworiordan.com/post/13174566389/url-regular-expression-for-links-with-or-without-the
http://stackoverflow.com/questions/37684/how-to-replace-plain-urls-with-links
http://stackoverflow.com/questions/5717093/check-if-a-javascript-string-is-an-url
但即使我给出的h/www.stackoverflow.com不是一个有效的url,他们也会验证它为真 另外/www.stackoverflow.com验证为true

它们不是有效的URL。有人能帮我写正则表达式吗。 我想自己写这个常规的exp 但是我找不到关于regexp的好教程。我几乎写不出这样的表达方式,比如包含一个字符,一个小字符

我相信这是我有点弱的地方,我想练习一些正则表达式。非常感谢您的帮助

请帮助我验证此url

更新

这是当前使用的regexp Iam


我恳请您制作一把js小提琴,这使得h/www.stackoverflow.com为假。很抱歉,所有答案都无效。

您可以在以www开头的URL上使用此选项

function ValidURL(str) {
  var pattern = new RegExp('(?:https?:\/\/|www\.)+[a-z0-9\-\.]+\.[a-z]{2,5}(?:(?:\/|#|\?)[^\s]*)?','i');
  if(!pattern.test(str)) {
    return false;
  } else {
    return true;
  }
}

如果URL是字符串,则可以使用另一种方法来匹配URL

var x;
try {
    var t = new URL( yourStringHere );
    x = true;
}
catch( e ) {
    x = false;
}

请发布您现在获得的正则表达式。因此,将第一部分设置为可选…@Xatenev刚刚更新了它。未捕获的语法错误:无效的正则表达式:/?:https?://www.+[a-z0-9-.]+.[a-z]{2,5}:?:/| |【^s]*?/:无需重复
var x;
try {
    var t = new URL( yourStringHere );
    x = true;
}
catch( e ) {
    x = false;
}