【发布时间】:2016-11-29 06:50:07
【问题描述】:
我正在开发一个应用程序,我们需要在该应用程序中验证 URL,检查它是否以 http 开头(如果不是,则在前面加上“http”),最后对它们进行编码。我的问题是我们收到的 url 可以包含所有类型的东西 - 无效/有效但不是以 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 字符的有效 url。我认为我不应该使用 URLValidator 查看我们获得的所有类型的 url。有人可以帮助/指导我吗?谢谢。
【问题讨论】:
标签: java validation url