Ich arbeite an einer Java-Methode, die zwischen absoluten und relativen URLs unterscheidet, so wie eine Browser-Adressleiste und nicht wie ein strenger URL-Parser. Das heißt, ich möchte, dass eine URL als absolut erkannt wird, wenn sie mit einem Host beginnt, ob das Schema vorhanden ist oder nicht. Auf diese Weise erkennt es schemelastige URLs (wie //example.com
) und URLs, bei denen das Schema vollständig weggelassen wurde (wie example.com
, wikipedia.org
, lots.and-lots.of.domains.com.ng
). Das Verfahren I‘, derzeit sieht ungefähr so Erkennen einer absoluten Web-URL auch ohne Schema
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;
}
Grundsätzlich verwenden, überprüft es für Punktfolgen der Zeichen getrennt A-Z
, a-z
, 0-9
, -
und _
, wo die letzte Sequenz (die TLD) enthält genau 2 oder 3 Buchstaben. Außerdem kann die Zeichenfolge mit einem optionalen //
beginnen. Meine Tests funktionieren so, wie ich es erwartet habe, aber ich möchte wirklich einen leichteren (oder besser lesbaren) Weg finden, dies zu tun. Irgendwelche Gedanken?