我正在开发一个应用程序,我们需要在其中验证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查看我们获得的所有类型的网址。有人可以帮助/指导我吗?谢谢。
答案 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);
}