使用 JavaScript 正则表达式检查有效的 URL

4

在JavaScript中,我应该使用什么表达式来检查有效的URL?


无法使用正则表达式有效地解析URL(请参见Gumbo的答案进行有趣的演示)。 - bobince
也就是说,有效的意义是什么?foo.com.kg 之所以有效,是因为它可能存在(在吉尔吉斯斯坦),而 foo.com.ap 则不是。没有“ap”国家代码。但从某种意义上说,它们都是有效的,因为它们都是 something.com.(两个字符) 的形式。 - AmbroseChapel
2个回答

7

1
谢谢,我之前没见过这个。 - eyelidlessness

1

这取决于您希望检查变得多么复杂。

这是一个超级复杂的例子:

^(?#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\d{2}])+=(?:[-\w~!$+|.,*:=]|%[a-f\d]{2})*)(?:&(?:[-\w~!$+|.,*:]|%[a-f\d{2}])+=(?:[-\w~!$+|.,*:=]|%[a-f\d]{2})*)*)*(?#Anchor)(?:#(?:[-\w~!$+|.,*:=]|%[a-f\d]{2})*)?$

实际上,正则表达式在不同平台间非常可移植。从谷歌搜索到的大多数示例都可以在JavaScript中使用,尽管可能需要进行一些“风味”修改。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接