如何验证Java中的字符串是否为有效URL

如何验证Java中的字符串是否为有效URL,java,url,Java,Url,如何检查字符串是否是Java中的URL?您可以尝试从中创建一个对象。如果不是正确的URL,将抛出一个。您可以从中使用。它将使您免于编写逻辑流通过捕获异常来引导的代码,这通常被认为是一种不好的做法。然而,在这种情况下,我认为按照其他人的建议去做是可以的,如果您将此功能移动到一个名为isvalidul(..)的实用方法,以更实际地补充Bozho的答案: 下载apachecommons并解压缩它。 在java构建路径中包括commons-validator-1.4.0.jar 使用以下示例代码()进

如何检查字符串是否是Java中的URL?

您可以尝试从中创建一个对象。如果不是正确的URL,将抛出一个。您可以从中使用。它将使您免于编写逻辑流通过捕获异常来引导的代码,这通常被认为是一种不好的做法。然而,在这种情况下,我认为按照其他人的建议去做是可以的,如果您将此功能移动到一个名为
isvalidul(..)
的实用方法,以更实际地补充Bozho的答案:

  • 下载apachecommons并解压缩它。
  • 在java构建路径中包括commons-validator-1.4.0.jar
  • 使用以下示例代码()进行测试:

  • 运行/调试


  • 如果您在Android中编程,您可以使用Android.webkit.URLUtil进行测试

    URLUtil.isHttpUrl(url)
    URLUtil.isHttpsUrl(url)
    

    希望对您有所帮助。

    此函数用于验证URL,并返回true(有效URL)或false(无效URL)


    确保
    导入java.net.URL

    对于Android只需添加以下行:

    boolean isValid = URLUtil.isValidUrl( "your.uri" );
    
    给你:

    public static boolean isValidURL(String urlString)
    {
        try
        {
            URL url = new URL(urlString);
            url.toURI();
            return true;
        } catch (Exception exception)
        {
            return false;
        }
    }
    

    这是一个正则表达式,用于验证http、https、ftp和ftps协议的URL。

    需要澄清的是,如果没有指定协议,或者找到未知协议,它只会抛出一个畸形的异常
    。与Apache的UrlValidator不同,它不执行额外的验证。它实际上也执行其他检查,例如端口号。我从javadocs中引用了这一点。它们没有说明任何其他检查。这是Javadocs所说的,但是检查是执行的(您可以自己尝试,或者如果愿意,可以查看源代码)@Tommie“192.168.0.1”(不带http://)不是有效的URL。创建
    java.net.URL
    将此作为参数传递失败,原因是
    java.net.malformedurexception:无协议
    。这是预期的行为,并记录在案。这里没有误报。这实际上并没有检查它是否是一个url。它只检查是否有http://在开始时,您需要的是URLUtil。isValidUrl(url)快速提示它被称为URLUtil。。。不是URLUtilS。我也在寻找这个解决方案,可能是重复的。非常感谢您提出这个问题。它不允许在主机名中使用下划线。
    http://ProductDetail/2Thumbz,Inc.?source=Admin(逗号、空格、句点)。为什么不干脆
    新建URI(urlString)
    ?如果缺少方案/前缀(例如“http”)(例如“stackoverflow.com”),这就不起作用了因此,URL和URII之间的区别也尝试了其他建议(
    newURL
    /
    newURI
    ),但是
    URL
    不喜欢没有方案的URL(而且它感觉只检查方案,没有其他内容),而且
    URI
    似乎返回“true”“,不管你向它扔什么(甚至是“--”)。到目前为止,我还没有找到一种方法来完成op要求的99.9%的工作。
    boolean isValid = URLUtil.isValidUrl( "your.uri" );
    
    public static boolean isValidURL(String urlString)
    {
        try
        {
            URL url = new URL(urlString);
            url.toURI();
            return true;
        } catch (Exception exception)
        {
            return false;
        }
    }
    
    ^(https://|http://|ftp://|ftps://)(?!-.)[^\\s/\$.?#].[^\\s]*$