【发布时间】:2011-03-24 15:17:34
【问题描述】:
我需要一个正则表达式来验证绝对 URL 或相对 URL。
- http://www.example.com 应该通过
- /example/some.pdf 应该通过
- /example.com/some.pdf 应该会失败
- 示例应该失败
【问题讨论】:
-
所有示例都是有效的 URL。 – 好吧,事实上,除了最后一个之外,所有 URL 都是有效的 absolute URL(您似乎混淆了相对、绝对和没有协议架构),只有最后一个是(有效!)相对 URL。总之,不清楚你在追求什么。
-
#4 中的缺陷:我在“somesite.com/blah.html”页面上。如果我在 ... 之类的页面上有一个链接,它将带我到“somesite.com/example”,它可以是最终指向“somesite.com/example/index.html”的有效网址或您可以使用 mod_rewrite 将其重定向到的任何内容......并且在那张纸条上,您可以使用 mod_rewrite 将任何内容重定向到任何内容,因此 IOW 没有严格的“无效”网址这样的东西
-
我想更正@KonradRudolph 在他们的建议中,除了最后一个 url 之外都是绝对 url,因为以斜杠开头的两个被称为 root-relative url。
-
@vhs the official specification(也不是 the original RFC)都没有提到“根相对 URL”(实际上示例 2 和 3 被称为“路径绝对 URL 字符串”)。也就是说,您是对的:令人困惑的是,根据规范,path-absolute-URL 字符串是 relative URL。令人惊讶的是,MDN makes the same mistake as I。很遗憾,我之前的评论已经 10 多年没有受到质疑。