如何在Java中使用正则表达式验证URL?

时间:2010-08-10 21:07:03

标签: java regex

我需要检查网址是否有效。该URL应包含一些子目录,如:

example.com/test/test1/example/a.html

网址应包含子目录testtest1example。如何使用Java中的regex检查URL是否有效?

4 个答案:

答案 0 :(得分:2)

String url = "example.com/test/test1/example/a.html";
List<String> parts = Arrays.asList(url.split("/"));
return (parts.contains("test") && parts.contains("test1") && parts.contains("example"));

答案 1 :(得分:1)

既然你想在正则表达式中做,那怎么样......

Pattern p = Pattern.compile("example\\.com/test/test1/example/[\\w\\W]*");

System.out.println("OK: " + p.matcher("example.com/test/test1/example/a.html").find());
System.out.println("KO: " + p.matcher("example.com/test/test2/example/a.html").find());

答案 2 :(得分:0)

您只需将您的URL作为参数传递给java.net.URL(String)构造函数,并检查构造函数是否抛出java.net.MalformedURLException

编辑但是,如果您只是想检查给定字符串是否包含给定的子字符串,请使用String.contains(CharSequence)方法。例如:

String url = "example.com/test/test1/example/a.html";
if (url.contains("/test/test1/")) {
    // ...
}

答案 3 :(得分:0)

这个问题在这里使用正则表达式回答: Regular expression to match URLs in Java

但您可以使用库 Apache Commons Validators 来使用一些经过测试的验证器来编写自己的验证器。

这是图书馆: http://commons.apache.org/validator/

这里是URL Validator的javadoc。 http://commons.apache.org/validator/apidocs/org/apache/commons/validator/UrlValidator.html