import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class URLValidator {
/**
* Validates a list of URLs with basic sanity checks.
*
* @param urls A list of URLs to validate.
* @return A list of error messages, one for each invalid URL. Returns an empty list if all URLs are valid.
*/
public static List<String> validateURLs(List<String> urls) {
List<String> errors = new ArrayList<>();
if (urls == null) {
errors.add("Input URL list is null.");
return errors;
}
for (String url : urls) {
if (url == null || url.isEmpty()) {
errors.add("URL is null or empty: " + url);
continue;
}
if (!isValidURLFormat(url)) {
errors.add("Invalid URL format: " + url);
} else {
//Further checks can be added here (e.g., domain existence, protocol check)
}
}
return errors;
}
private static boolean isValidURLFormat(String url) {
// Basic regex for URL format validation. Not exhaustive.
String regex = "^(http(s)?://)?([\\w-]+\\.)+[\\w-]+(/[\\w- ./?%&=]*)?$";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(url);
return matcher.matches();
}
public static void main(String[] args) {
List<String> urls = new ArrayList<>();
urls.add("https://www.example.com");
urls.add("http://example.com");
urls.add("invalid-url");
urls.add(" ");
urls.add(null);
urls.add("https://example.com/path with spaces");
List<String> errors = validateURLs(urls);
if (errors.isEmpty()) {
System.out.println("All URLs are valid.");
} else {
System.out.println("Invalid URLs:");
for (String error : errors) {
System.out.println(error);
}
}
}
}
Add your comment