Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用于URL验证的正则表达式(JavaScript)_Javascript_Regex_Validation_Url - Fatal编程技术网

用于URL验证的正则表达式(JavaScript)

用于URL验证的正则表达式(JavaScript),javascript,regex,validation,url,Javascript,Regex,Validation,Url,是否有人有用于验证URL的正则表达式(而不是用于在文本段落中查找URL)?最好使用JavaScript代码段。试试这个,它对我很有用: function isUrl(s) { var regexp = /(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/ return regexp.test(s); } /^(http[s]?:\/\/){0,1}(w{3

是否有人有用于验证URL的正则表达式(而不是用于在文本段落中查找URL)?最好使用JavaScript代码段。

试试这个,它对我很有用:

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

实际的URL语法相当复杂,不容易在正则表达式中表示。大多数外观简单的正则表达式都会给出许多假阴性和假阳性。看一看是为了消遣,但即使最终结果也不好

此外,现在您通常希望允许IRI和旧的学校URI,因此我们可以链接到以下有效地址:

http://en.wikipedia.org/wiki/Þ
http://例え.テスト/
我只会进行简单的检查:它是否以一个已知的好方法开始:name?它没有空格和双引号吗?如果是这样的话,那它可能已经足够好了。

试试这个正则表达式

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

在“正确操作:仅验证方案名称://”、空格和双引号通常就足够了。以下是如何在JavaScript中实现验证:

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

语法参考:


统一资源定位地址
函数验证(){
var url=document.getElementById(“url”).value;
var模式=/(ftp | http | https):\/\/(\w+:{0,1}\w*@)(\S+(:[0-9]+)?(\/\\\/([\w!:?+=&%@!\-\/])?/;
if(模式测试(url)){
警报(“Url有效”);
返回true;
} 
警报(“Url无效!”);
返回false;
}
网址:

我使用/^[a-z]+:[^::]+$/I正则表达式进行URL验证。请参见带有URL验证的跨浏览器代码示例


输入键过滤测试
网址:
CreateUrlFilter(“Url”,函数(事件){//onChange事件
inputKeyFilter.RemoveMyTooltip();
var elementNewInteger=document.getElementById(“NewUrl”);
elementNewInteger.innerHTML=this.value;
}
//onblur事件。如果要在输入值为NaN时再次将焦点设置为输入元素,请使用此函数。(空或无效)
,函数(事件){this.ikf.customFilter(this);}
);
新网址:
试试这个:

 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;
/^((ftp|http|https):\/\/)?www\.([A-z]+)\.([A-z]{2,})/

经过长时间的研究,我构建了这个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')
}
url='1〕https://google.co.in';
变量re=/[a-z0-9-\.]+.[a-z]{2,4}\/?([^\s\\\\\\\\\\\\\\\\\\\\\\\\\\[\]`]+)$/;
如果(!re.test(url)){
警报(“url错误”);
返回false;
}否则{
警报(“成功”)
}

我发现这方面取得了一些成功:

 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;
/^((ftp|http|https):\/\/)?www\.([A-z]+)\.([A-z]{2,})/
  • 它检查以下一项或全部:ftp://、http://或https://
  • 它需要www
  • 它检查任意数量的有效字符
  • 最后,它检查它是否有一个域,并且该域至少有2个字符

它显然并不完美,但它很好地处理了我的案件

试试这个它对我很有用:

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

您可以在输入中简单地使用
type=“url”
,并在js中使用
checkValidity()
进行检查

例如:

你的.html

<input id="foo" type="url">

我找不到一个能很好地满足我需要的。书面和邮寄@

功能有效期{
(2,)2,}(本地主机| 1,3{{{1,3}{{1,3 3}{{1,3 3}{1,3}1,3{1,3}目前的注册方=//^(ftp | http | http | http 124;http | http | http | http | http | http | http | http | http | http | http | http | http | http | http | http | http | http | http |铬铬铬铬铬铬铬124;铬124:::::::::::::::::::|\?|和:\d|@=|\/|\(.*)|-|%)*$/gum
返回regexp.test;

}
这个正则表达式是@Aamir-answer的补丁,对我有用

/((?:(?:http?|ftp)[s]*:\/\/)?[a-z0-9-%\/\&=?\.]+\.[a-z]{2,4}\/?([^\s<>\#%"\,\{\}\\|\\\^\[\]`]+)?)/gi
/((?:(?:http?| ftp)[s]*:\/\/)?[a-z0-9-%\/\&=?\.]+.[a-z]{2,4}\/.([^\s\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\[\]`]+)/gi
它匹配这些URL格式

  • yourwebsite.com
  • yourwebsite.com/4564564/546564/546564?=adsfasd


  • 我想确定我不会用这个正则表达式得到假阴性。你没有问题吗?到目前为止没有问题。为什么不对你预期的假阳性进行测试呢?这会给像“;”这样的符号带来假阴性在查询中,除了在表达式的中间是一个大的“大代码> S++/CODE”,它可以扩展到几乎匹配任何东西,并且它不锚定在末尾,这样你就可以把任何尾随的废话放进去。例如,“http://@”或“有一束可爱的“椰子”是“有效的”。好的。至少现在我知道,在大多数情况下,这可能不值得付出努力:]谢谢。/(ftp | https?):\/\/[^”]+$/事实上,验证URL的正确方法是不使用正则表达式。请查看。它比一个regexp复杂得多,这就是为什么使用专门的库总比使用自己的正则表达式好。另外要考虑两件事:1)电话:、邮件:、短信:都是有效的主机;2)移动浏览器(尤其是iOS)允许其他东西代替http/https/ftp进行应用程序间通信。我认为最好使用正则表达式进行url验证。这不适用于以下url:www.google.com、gogl.com、、www.google.co.in、www.google.com.in.ssd此代码对许多url都不起作用。检测url时,最好使用专门的库。@DerekHendersone你去,你W3Schools hater;)+1,因为W3Schools hate得到了一个不必要的-1。这段代码对很多URL都不起作用。当检测URL时,最好依赖一个专门的库..var r=new RegExp(/^(ftp | http | https):\/\/[^]+$/);新参数时不需要“..”,只需使用/^(ftp | http | https):\/\/[^”]+$/,作为我的tryalso+1,用于为W3获取不必要的-1。此代码不适用于许多URL。验证URL时,最好依赖专用库。如果要自定义模式,使用纯JavaScript是更好的验证选项,您可以轻松地在模式中执行该操作。它将此代码标记为有效。h://google。comh://google.com 是有效的URL。“h:”是有效的前缀,有关详细信息,请参阅。有效URL的示例:mailto:myname@domain.com如果只想筛选超文本传输协议,则需要使用/^http:\/\/[^:::::+$/i正则表达式。我认为您的表达式在协议和
    /
    之间缺少一个
    。其他
    /((?:(?:http?|ftp)[s]*:\/\/)?[a-z0-9-%\/\&=?\.]+\.[a-z]{2,4}\/?([^\s<>\#%"\,\{\}\\|\\\^\[\]`]+)?)/gi