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