4

URL を検証するために Java で URLValidator クラスを使用しました。しかし、ユーザーが URL でプロトコルを指定しない場合は、検証も有効として返される必要があります。

正しい説明: これが URL "http://www.google.com" で指定されている場合、これも有効な URL である必要があり、"www.google.com" が指定されている場合は、検証も有効な URL として返される必要があります。

私はたくさん試しました。これで私を助けてください。前もって感謝します。

4

3 に答える 3

5

それがあなたのために働くかどうかを確認してください:

boolean foundMatch = false;
try {
    Pattern regex = Pattern.compile("\\b(?:(https?|ftp|file)://|www\\.)?[-A-Z0-9+&#/%?=~_|$!:,.;]*[A-Z0-9+&@#/%=~_|$]\\.[-A-Z0-9+&@#/%?=~_|$!:,.;]*[A-Z0-9+&@#/%=~_|$]", Pattern.CASE_INSENSITIVE | Pattern.UNICODE_CASE);
    Matcher regexMatcher = regex.matcher(subjectString);
    foundMatch = regexMatcher.matches();
} catch (PatternSyntaxException ex) {
    // Syntax error in the regular expression
}
于 2012-08-23T07:31:00.767 に答える
1

最善の方法は、プロトコルがない場合は http を先頭に追加して (URL のデフォルト プロトコルであるため)、URL を検証することです。

于 2012-08-23T07:54:06.000 に答える
0

あなたの要件は非常に具体的であり、一般化することはできません。使用URLValidatorしている は正しく検証されます。プロトコル文字列(http:// など)の存在は、URL が有効であるための基本的な要件です。必要に応じて、次のことができます

  1. カスタム URL バリデーターを作成します(拡張するURLValidatorか、コンポジションを使用して)。
  2. その検証メソッド内で、URL の先頭にプロトコル文字列があるかどうかを確認します。存在しない場合は、追加して を呼び出し、URLValidator実際に URL を検証します。
于 2012-08-23T07:50:59.890 に答える