在javascript中使用regexp验证网址

时间:2014-06-09 12:48:54

标签: javascript php regex

我有一个字符串来验证它是否是有效的URL。 我用谷歌搜索了它,如果网址包含http or https

,我只能找到解决方案

我想将网址设为valid,即使它不包含域名example -> www.google.com的http前面

这些是我尝试的一些网址,但确实有效。

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不是有效的网址,他们也会将其验证为真 也/www.stackoverflow.com验证为真

他们不是有效的网址。任何人都可以帮我写正则表达式。 我想自己编写这个常规exp 但是我无法在regexp上找到很好的教程。我几乎不能写出一些表达,比如包含一个字符,一个小字符。

我相信它的区域很弱,我想练习一些正则表达式。任何帮助是极大的赞赏。

请帮我验证这个网址。

更新

 ((([A-Za-z]{3,9}:(?:\/\/)?)(?:[\-;:&=\+\$,\w]+@)?[A-Za-z0-9\.\-]+|(?:www\.|[\-;:&=\+\$,\w]+@)[A-Za-z0-9\.\-]+)((?:\/[\+~%\/\.\w\-_]*)?\??(?:[\-\+=&;%@\.\w_]*)#?(?:[\.\!\/\\\w]*))?)

这是目前正在使用的正则表达式

我恳请你做一个js小提琴,这使得h / www.stackoverflow.com变为假。对不起,但没有一个答案没有用。

2 个答案:

答案 0 :(得分:0)

您可以使用此功能(适用于以www开头的网址。)

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

答案 1 :(得分:0)

如果网址是字符串,您可以使用其他方法来匹配网址。

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