Вдохновленный кодом, который я нашел в этом посте , я создал следующий метод валидатора, который, похоже, вполне подходит для простых проверок. Читая JavaDoc URI, я удалил некоторые ложные срабатывания, такие как «host: 80» и «hostname / page», но я не могу гарантировать, что остались некоторые ложные срабатывания.
public static boolean isValidHostNameSyntax(String candidateHost) {
if (candidateHost.contains("/")) {
return false;
}
try {
// WORKAROUND: add any scheme and port to make the resulting URI valid
return new URI("my://userinfo@" + candidateHost + ":80").getHost() != null;
} catch (URISyntaxException e) {
return false;
}
}