验证并编码包含Java中的unicode字符的URL

时间:2016-07-25 19:35:44

标签: java validation url

我正在开发一个应用程序,我们需要在其中验证URL,检查它是否以http开头(如果没有,先加上'http')并最终对它们进行编码。我的问题是我们收到的网址可以包含所有类型的东西 - 无效/有效,但不是以http /已编码/有效但包含空格或unicode字符开头。 目前我正在使用URLValidator类,但它不验证空格或unicode字符。以下是我的代码:

if (url != null && !url.trim().isEmpty()) {
url = URLDecoder.decode(url, "UTF-8");
if (!url.matches("^(https?)://.*$")) {
    url = "http" + url;
}
UrlValidator validator = new UrlValidator();
if (url.contains("(")) {
    if (validator.isValid(url.substring(0, url.indexOf("(")))) {
        return getEncodedSiteUrl(url);
    }
    return null;
}
if (validator.isValid(url)) {
    return getEncodedSiteUrl(url);
}
}

但是这段代码过滤掉了包含空格/ unicode字符的所有有效网址。我认为我不应该使用URLValidator查看我们获得的所有类型的网址。有人可以帮助/指导我吗?谢谢。

1 个答案:

答案 0 :(得分:0)

检查this网址,其中包含您可能使用的方法。

public static boolean isURL(String url)
{
   if (url == null) {
     return false;
}
// Assigning the url format regular expression
String urlPattern = "^http(s{0,1})://[a-zA-Z0-9_/\\-\\.]+\\.([A-Za-z/]{2,5})[a-zA-Z0-9_/\\&\\?\\=\\-\\.\\~\\%]*";
return url.matches(urlPattern);
}