URL验证没有协议

时间:2012-08-23 07:27:44

标签: java url

我在java中使用了URLValidator类来验证URL。但我希望如果用户不在URL中提供任何协议,那么验证应该返回为有效。

正确解释:如果这是在网址“http://www.google.com”中提供的,那么它也应该是有效的网址,如果提供了“www.google.com”,那么验证也应该返回为有效URL。

我已经尝试了很多。请帮助我。 在此先感谢。

3 个答案:

答案 0 :(得分:4)

检查这是否适合您:

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
}

答案 1 :(得分:0)

您的要求非常具体,不能一概而论。您正在使用的URLValidator正确验证。 协议字符串(如http://)的存在是基本要求,以使URL有效。根据您的需要,您可以执行以下操作

  1. 创建自定义网址验证程序(通过扩展URLValidator或使用合成)。
  2. 在其验证方法中,检查URL是否在开头有协议字符串。如果不存在则添加它并调用URLValidator来实际验证URL。

答案 2 :(得分:0)

如果没有协议然后验证网址,那么最好的做法是预先添加http(因为这是网址的默认协议)。