【发布时间】:2016-04-04 16:28:31
【问题描述】:
我正在研究一种 Java 方法,该方法以浏览器地址栏的方式而不是严格的 URL 解析器的方式区分绝对和相对 URL。也就是说,如果它以主机开头,我希望它能够将 URL 识别为绝对 URL,
该方案是否存在。这样,它可以正确识别方案相对 URL(如 //example.com)和完全省略方案的 URL(如 example.com、wikipedia.org、lots.and-lots.of.domains.com.ng)。我目前使用的方法看起来像这样
public String checkPossiblyAbsolute(String url) {
if (url.matches("^(\\/\\/)?([-_A-Za-z0-9]+\\.)+\\w{2,3}(\\/.*)?$")) {
if (url.startsWith("//")) url = "http:" + url;
else url = "http://" + url;
}
return url;
}
基本上,它会检查字符 A-Z、a-z、0-9、- 和 _ 的点分隔序列,其中最后一个序列(TLD)正好包含 2 或 3 个字母。此外,字符串可能以可选的// 开头。我的测试按我预期的方式工作,但我真的想找到一种更简单(或至少更具可读性)的方法来做到这一点。有什么想法吗?
【问题讨论】:
标签: java regex url url-scheme absolute-path