Я работаю над Java-методом, который отличает абсолютные и относительные URL-адреса от адресной строки браузера, а не от того, как будет выглядеть строгий анализатор URL. То есть, я хочу, чтобы он распознавал URL как абсолютный, если он начинается с хоста, независимо от того, присутствует ли схема. Таким образом, он правильно распознает URL-адреса, относящиеся к схеме (например, //example.com
), а URL-адреса со схемой полностью опущены (например, example.com
, wikipedia.org
, lots.and-lots.of.domains.com.ng
). Метод I», в настоящее время использует выглядит примерно такПризнать абсолютный веб-адрес даже без схемы
public String checkPossiblyAbsolute(String url) {
if (url.matches("^(\\/\\/)?([-_A-Za-z0-9]+\\.)+\\w{2,3}(\\/.*)?$")) {
if (url.startsWith("//")) url = "http:" + url;
else url = "http://" + url;
}
return url;
}
В основном, он проверяет, точку разделенных последовательности символов A-Z
, a-z
, 0-9
, -
и _
где последняя последовательность (ДВА) содержит ровно- или 3 буквы. Кроме того, строка может начинаться с необязательного //
. Мои тесты работают так, как я ожидал, но я действительно хочу найти более легкий (или, по крайней мере, более читаемый) способ сделать это. Есть предположения?