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

9gm1akwq  于 2023-01-01  发布在  Java
关注(0)|答案(8)|浏览(233)

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

mdfafbf1

mdfafbf11#

您可以尝试从它创建一个java.net.URL对象。如果它不是一个正确的URL,将抛出一个MalformedURLException

bejyjqdl

bejyjqdl2#

您可以从commons-validator中使用UrlValidator。它将使您不必编写通过捕获异常来指导逻辑流的代码,这通常被认为是一种不好的做法。然而,在这种情况下,我认为按照其他人的建议进行操作是很好的,如果您将此功能移到一个名为isValidUrl(..)的实用程序方法中

0qx6xfy6

0qx6xfy63#

对于Android,只需添加以下行:

boolean isValid = URLUtil.isValidUrl( "your.uri" );
ni65a41a

ni65a41a4#

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

这将根据RFC2396进行检查,类似于<scheme>://<authority><path>?<query>#<fragment>,但scheme必须由URL源代码已知。这些无效

  • telnet://melvyl.ucop.edu
  • news:comp.infosystems.www.servers.unix
  • www.google.com
jucafojl

jucafojl5#

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

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

希望能有所帮助。

ldxq2e6h

ldxq2e6h6#

补充Bozho的回答,去更实际:
1.下载apache公共文件package并解压缩。

1.在java构建路径中包含commons-validator-1.4.0.jar。
1.使用以下示例代码(参考)进行测试:

//...your imports

import org.apache.commons.validator.routines.*; // Import routines package!

public static void main(String[] args){

// Get an UrlValidator
UrlValidator defaultValidator = new UrlValidator(); // default schemes
if (defaultValidator.isValid("http://www.apache.org")) {
    System.out.println("valid");
}
if (!defaultValidator.isValid("http//www.oops.com")) {
    System.out.println("INvalid");
}

// Get an UrlValidator with custom schemes
String[] customSchemes = { "sftp", "scp", "https" };
UrlValidator customValidator = new UrlValidator(customSchemes);
if (!customValidator.isValid("http://www.apache.org")) {
    System.out.println("valid");
}

// Get an UrlValidator that allows double slashes in the path
UrlValidator doubleSlashValidator = new UrlValidator(UrlValidator.ALLOW_2_SLASHES);
if (doubleSlashValidator.isValid("http://www.apache.org//projects")) {
    System.out.println("INvalid");
}

1.运行/调试

bakd9h0s

bakd9h0s7#

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

public static boolean isURL(String url) {
    try {
        new URL(url);
        return true;
    } catch (Exception e) {
        return false;
    }
}

一定要import java.net.URL;

7dl7o3gd

7dl7o3gd8#

^(https://|http://|ftp://|ftps://)(?!-.)[^\\s/\$.?#].[^\\s]*$

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

相关问题