4

我在 java 中使用 URLValidator 类来验证 URL 。但我希望如果用户不会在 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. 在其 validate 方法中,检查 URL 开头是否有协议字符串。如果它不存在,则添加它并调用URLValidator以实际验证 URL。
于 2012-08-23T07:50:59.890 回答