私は厳密なURLパーサーのやり方ではなく、ブラウザのアドレスバーのような絶対URLと相対URLとを区別するJavaメソッドを開発しています。つまり、スキームが存在するかどうかにかかわらず、ホストで始まるURLを絶対URLとして認識するようにします。 そうすれば、スキームが完全に省略されたスキーム(たとえば、//example.com
など)とURL(example.com
、wikipedia.org
、lots.and-lots.of.domains.com.ng
など)を正しく認識します。私は「メソッド、現在このスキームなしでも絶対Web URLを認識
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;
}
のように見える何かを使用して基本的には、ドットをチェックするには、最後のシーケンス(TLD)は、正確に2が含まれている文字A-Z
、a-z
、0-9
、-
、および_
のシーケンスを分離しました3文字です。また、文字列はオプションの//
で始まることもあります。私のテストは私が期待した通りに動作しますが、実際にこれを行うための簡単な方法(または少なくとも読みやすい方法)を探したいと思っています。何かご意見は?