如何验证字符串在Java中是否为有效URL(包括深度链接)

如何验证字符串在Java中是否为有效URL(包括深度链接),java,regex,string,validation,Java,Regex,String,Validation,如何验证字符串在Java中是否为有效URL(包括deeplink)。对于以下测试用例,该方法应返回true http://www.example.com/gizmos https://www.example.com/gizmos example://gizmos 尝试使用Apache Commons Validator项目中的UrlValidator类 String[] URLPrefixes = {"http","https", "example"}; UrlValidator urlVal

如何验证字符串在Java中是否为有效URL(包括deeplink)。对于以下测试用例,该方法应返回true

http://www.example.com/gizmos
https://www.example.com/gizmos
example://gizmos

尝试使用Apache Commons Validator项目中的UrlValidator类

String[] URLPrefixes = {"http","https", "example"};
UrlValidator urlValidator = new UrlValidator(URLPrefixes);
if (urlValidator.isValid("http://www.example.com/gizmos")) {
   System.out.println("URL is valid");
} else {
   System.out.println("URL is invalid");
}

你知道班级吗?@Ivar这个答案不符合我的要求。我在这里写了一个测试用例。第三项声明example://gizmos 失败here@aqel最受欢迎的答案应该适用于您的案例。只需将构造函数更改为
urlvalidater urlvalidater=newurlvalidater(urlvalidater.ALLOW\u ALL\u方案)
@aqel(回应您对Dawid答案的评论)它失败了,因为
gizmo
不被视为有效域。你确定应该这样吗?如果是本地URL,则可以将其更改为
urlvalidater urlvalidater=new urlvalidater(urlvalidater.ALLOW\u ALL\u SCHEMES+urlvalidater.ALLOW\u local\u URL)@ivar ALLOW\u LOCAL\u URL用于本地主机,对吗?但我这里说的是深层次的联系。它可以是没有空格的任何单词。请看看这个链接这基本上是一个副本。如果在堆栈溢出时已回答问题,则将其标记为重复。不要回答。(特别是没有归因)我已经根据研究结果回答了这个问题,并根据提出的需求修改了它(看看他的问题)。不要把它复杂化太多。@DawidWawrzynczyk TBH我也不知道你的答案为什么/如何与->downvote有很大不同。@DawidWawrzynczyk,结尾问题重复。回答这些问题实际上会破坏内容,使找到问题的最佳解决方案变得更加困难。(请记住,堆栈溢出的目标是成为一个高质量问答库。我们不是来帮助OP的,而是来帮助OP以外的那些面临相同问题的人。)“只要我帮助用户”将问题标记为重复问题将导致OP提出同样有助于他们的问题。