是否有一个用于验证URL(而不是在文本中查找它们)的正则表达式?最好使用JavaScript代码片段。
是否有一个用于验证URL(而不是在文本中查找它们)的正则表达式?最好使用JavaScript代码片段。
在被采纳的答案中,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
语法参考资料:
实际的URL语法非常复杂,不易用正则表达式表示。大多数看起来简单的正则表达式将产生许多错误的结果,包括假负和假正匹配。你可以查看这些例子以获得乐趣,但即使最终结果也不是很好。
此外,现在您通常需要允许IRI和旧版URI,以便链接到有效的地址,例如:
http://en.wikipedia.org/wiki/Þ
http://例え.テスト/
我只会进行简单的检查:它是否以一个已知的良好方法(名称)开头?它是否不包含空格和双引号?如果是,那么它可能足够好了。
尝试使用这个正则表达式
/(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/
对我来说,它运行得最好。
我在这方面取得了一些成功:
/^((ftp|http|https):\/\/)?www\.([A-z]+)\.([A-z]{2,})/
显然它并不完美,但它处理我的情况还是相当不错的。
这个正则表达式是从 @Aamir 的回答中得到的补丁,对我有效。
/((?:(?:http?|ftp)[s]*:\/\/)?[a-z0-9-%\/\&=?\.]+\.[a-z]{2,4}\/?([^\s<>\#%"\,\{\}\\|\\\^\[\]`]+)?)/gi
它匹配以下URL格式:
type="url"
,然后在js中使用checkValidity()
进行检查。your.html
<input id="foo" type="url">
your.js
$("#foo").on("keyup", function() {
if (this.checkValidity()) {
// The url is valid
} else {
// The url is invalid
}
});
经过长时间的研究,我制定了这个正则表达式。我希望它能帮助其他人......
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')
}
<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>
我找不到一个能够满足我的需求的翻译工具。这篇文章是在https://gist.github.com/geoffreyrobichaux/0a7774b424703b6c0fffad309ab0ad0a上编写和发布的。
function validURL(s) {
var regexp = /^(ftp|http|https|chrome|:\/\/|\.|@){2,}(localhost|\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}|\S*:\w*@)*([a-zA-Z]|(\d{1,3}|\.){7}){1,}(\w|\.{2,}|\.[a-zA-Z]{2,3}|\/|\?|&|:\d|@|=|\/|\(.*\)|#|-|%)*$/gum
return regexp.test(s);
}
我试过这个方法,它对我有效:
/^(http[s]?:\/\/){0,1}(w{3,3}\.)[-a-z0-9+&@#\/%?=~_|!:,.;]*[-a-z0-9+&@#\/%=~_|]/;