使用 Javascript 正则表达式检查有效的 url

Posted

技术标签:

【中文标题】使用 Javascript 正则表达式检查有效的 url【英文标题】:Checking for a valid url using Javascript Regular Expressions 【发布时间】:2010-10-18 22:32:27 【问题描述】:

为了检查 javascript 中的有效 url,我应该使用什么表达式?

【问题讨论】:

***.com/questions/206059, 441739, 442405, 690849, 161738 等等。正则表达式无法有效地解析 URL(请参阅 Gumbo 的有趣演示答案)。 另外,在什么意义上有效? foo.com.kg 是有效的,因为它是一个可能存在的域(在克里吉斯坦),而 foo.com.ap 不是。没有“ap”国家代码。但从某种意义上说,它们都是有效的。com.(两个字符)。 【参考方案1】:

看看这个根据 RFC 1738 自动生成的complete regular expression for URLs。

【讨论】:

谢谢,我以前没见过。【参考方案2】:

不取决于您希望支票有多复杂。

这是一个超级复杂的:

^(?#Protocol)(?:(?:ht|f)tp(?:s?)\:\/\/|~/|/)?(?#Username:Password)(?:\w+:\w+@)?(?#Subdomains)(?:(?:[-\w]+\.)+(?#TopLevel Domains)(?:com|org|net|gov|mil|biz|info|mobi|name|aero|jobs|museum|travel|[a-z]2))(?#Port)(?::[\d]1,5)?(?#Directories)(?:(?:(?:/(?:[-\w~!$+|.,=]|%[a-f\d]2)+)+|/)+|\?|#)?(?#Query)(?:(?:\?(?:[-\w~!$+|.,*:]|%[a-f\d2])+=(?:[-\w~!$+|.,*:=]|%[a-f\d]2)*)(?:&(?:[-\w~!$+|.,*:]|%[a-f\d2])+=(?:[-\w~!$+|.,*:=]|%[a-f\d]2)*)*)*(?#Anchor)(?:#(?:[-\w~!$+|.,*:=]|%[a-f\d]2)*)?$

实际上,正则表达式可以在平台之间轻松移植。来自 google 搜索的大多数示例都可以在 Javascript 中使用,尽管可能会进行一些“风味”修改。

【讨论】:

以上是关于使用 Javascript 正则表达式检查有效的 url的主要内容,如果未能解决你的问题,请参考以下文章

使用正则表达式检查相对URL是否有效?

检查正则表达式是不是通过正则表达式有效

Java中使用正则检查有效日期

使用 C# 中的正则表达式操作检查 EditText 上的有效电子邮件 [关闭]

使用javascript检查美国地址的正则表达式? [复制]

ActionScript 3 AS3使用正则表达式检查并返回有效的英国邮政编码