在Java中验证URL

3

有人知道如何使用正则表达式在Java中验证URL的格式吗?

谢谢。


请参考以下问题:https://dev59.com/H3VD5IYBdhLWcg3wTJrF - Pops
使用正则表达式。不要使用下面共享的类。它们可能会打开网络连接。 - MikeNereson
@MikeNereson 这是不正确的。java.net.URI永远不会访问网络,这是Java中验证URI的最佳方式。java.net.URL的equals()和hashCode()方法尝试访问网络,这是正确的,但java.net.URL构造函数很可能不会这样做。 - jcsahnwaldt Reinstate Monica
2个回答

7
一个非常隐蔽的方法是这样做:
try {
    new java.net.URI(myUrl);
} catch(URISyntaxException e) {
    // url badly formed
}

3
我建议不要使用URL类(请参阅下面的URI的答案) - 它会进行网络查找以解析服务器名称。 - dplass
我实际上想使用URI类,谢谢你指出来。 - Finbarr
感谢您修复示例。 - dplass
3
Java.net.URI的构造函数会抛出URISyntaxException而不是MalformedURLException。至少在安卓版本的Java中是这样的! - Ben Clayton
首先,应该使用URISyntaxException而不是MalformedURLException。其次,使用异常来进行正常流程控制并不是一个好的实践。此外,如果您不打算使用new java.net.URI(myUrl)返回的对象,则最好避免调用。检查URI的有效性需要一个URIValidator类,该类应该 - 据我所知 - 使用正则表达式(我仍在网络上寻找。一旦我找到了什么,我会告诉您)。 - Pantelis Sopasakis

7

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