对于URL验证正则表达式(在JavaScript)(Regular expression for U

2019-07-17 17:17发布

是否有人有用于验证的URL(不是为他们寻找一个文本段落内)一个正则表达式? JavaScript代码将是首选。

Answer 1:

实际的URL语法是相当复杂的,不容易在正则表达式来表示。 大多数看起来简单的正则表达式在那里会给许多假阴性和假阳性。 见游乐这些努力 ,但即使最终的结果并不好。

加上这几天你会一般要允许IRI以及老派的URI,所以我们可以链接到类似于有效地址:

http://en.wikipedia.org/wiki/Þ
http://例え.テスト/

我会去只为简单的检查:名称:它与已知良好的方法来启动? 它是免费的空间和双引号? 如果是这样,地狱,它可能不够好。



Answer 2:

在接受的答案 bobince猜中了:只验证方案名称,://和空格和双引号通常是不够的。 这里是如何验证在JavaScript来实现:

var url = 'http://www.google.com';
var valid = /^(ftp|http|https):\/\/[^ "]+$/.test(url);
// true

要么

var r = /^(ftp|http|https):\/\/[^ "]+$/;
r.test('http://www.goo le.com');
// false

要么

var url = 'http:www.google.com';
var r = new RegExp('/^(ftp|http|https):\/\/[^ "]+$/');
r.test(url);
// false

语法参考:

  • MDN RegExp对象
  • W3Schools的RegExp对象


Answer 3:

试试这个正则表达式

/(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/

它最适合我。



Answer 4:

<html>
<head>
<title>URL</title>
<script type="text/javascript">
    function validate() {
        var url = document.getElementById("url").value;
        var pattern = /(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/;
        if (pattern.test(url)) {
            alert("Url is valid");
            return true;
        } 
            alert("Url is not valid!");
            return false;

    }
</script>

</head>
<body>
URL :
<input type="text" name="url" id="url" />
<input type="submit" value="Check" onclick="validate();" />
</body>
</html>


Answer 5:

我发现一些成功的:

/^((ftp|http|https):\/\/)?www\.([A-z]+)\.([A-z]{2,})/
  • 它检查一个或没有如下:FTP://,HTTP://或https://开头
  • 它需要WWW。
  • 它会检查任何数量的有效字符。
  • 最后,它会检查,它有一个结构域和结构域为至少2个字符。

这显然并不完美,但它处理我的情况还算不错



Answer 6:

试试这个正则表达式 ,它为我工作:

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


Answer 7:

试试这个:

 var RegExp =/^(?:(?:https?|ftp):\/\/)(?:\S+(?::\S*)?@)?(?:(?!10(?:\.\d{1,3}){3})(?!127(?:\.\d{1,3}){3})(?!169\.254(?:\.\d{1,3}){2})(?!192\.168(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z\u00a1-\uffff0-9]+-?)*[a-z\u00a1-\uffff0-9]+)(?:\.(?:[a-z\u00a1-\uffff0-9]+-?)*[a-z\u00a1-\uffff0-9]+)*(?:\.(?:[a-z\u00a1-\uffff]{2,})))(?::\d{2,5})?(?:\/[^\s]*)?$/i;


Answer 8:

/(?:http[s]?\/\/)?(?:[\w\-]+(?::[\w\-]+)?@)?(?:[\w\-]+\.)+(?:[a-z]{2,4})(?::[0-9]+)?(?:\/[\w\-\.%]+)*(?:\?(?:[\w\-\.%]+=[\w\-\.%!]+&?)+)?(#\w+\-\.%!)?/


Answer 9:

试试这个工作对我来说:

 /^(http[s]?:\/\/){0,1}(w{3,3}\.)[-a-z0-9+&@#\/%?=~_|!:,.;]*[-a-z0-9+&@#\/%=~_|]/;


Answer 10:

我使用/ ^ [AZ] +:[^:] + $ /我经常对URL验证表达式。 见我的跨浏览器的一个例子InputKeyFilter网址验证码。

 <!doctype html> <html xmlns="http://www.w3.org/1999/xhtml" > <head> <title>Input Key Filter Test</title> <meta name="author" content="Andrej Hristoliubov anhr@mail.ru"> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <!-- For compatibility of IE browser with audio element in the beep() function. https://www.modern.ie/en-us/performance/how-to-use-x-ua-compatible --> <meta http-equiv="X-UA-Compatible" content="IE=9"/> <link rel="stylesheet" href="https://rawgit.com/anhr/InputKeyFilter/master/InputKeyFilter.css" type="text/css"> <script type="text/javascript" src="https://rawgit.com/anhr/InputKeyFilter/master/Common.js"></script> <script type="text/javascript" src="https://rawgit.com/anhr/InputKeyFilter/master/InputKeyFilter.js"></script> </head> <body> URL: <input type="url" id="Url" value=":"/> <script> CreateUrlFilter("Url", function(event){//onChange event inputKeyFilter.RemoveMyTooltip(); var elementNewInteger = document.getElementById("NewUrl"); elementNewInteger.innerHTML = this.value; } //onblur event. Use this function if you want set focus to the input element again if input value is NaN. (empty or invalid) , function(event){ this.ikf.customFilter(this); } ); </script> New URL: <span id="NewUrl"></span> </body> </html> 

另请参阅我的页面输入键过滤器的例子 。



Answer 11:

经过长期的研究后,我建立这个reg表达式。 我希望这会帮助别人太.......

url = 'https://google.co.in';
var re = /[a-z0-9-\.]+\.[a-z]{2,4}\/?([^\s<>\#%"\,\{\}\\|\\\^\[\]`]+)?$/;
if (!re.test(url)) { 
 alert("url error");
return false;
}else{
alert('success')
}


文章来源: Regular expression for URL validation (in JavaScript)