小编qum*_*umm的帖子

如何在java中验证允许使用通配符(*,%)的URL(域)

我想在java中检查验证URL是否允许使用通配符.

我找到了一些关于在java中验证URL的好例子(REGEX,urlValidator),但是那些没有提供通配符.

这是我正在练习的内容:

CODE(urlValidator)

public void urlValidiTest(){
    System.out.println(this.urlCheck("https://www.google.com"));
    System.out.println(this.urlCheck("https://google.com"));
    System.out.println(this.urlCheck("*.com"));
}

public boolean urlCheck(String url){
    return new UrlValidator().isValid(url);
}
Run Code Online (Sandbox Code Playgroud)

OUTPUT

真正

真正

CODE(正则表达式)

public void regexTest() {
  String[] URLs = new String[] { "http://www.google.com", "http://google.com/","*.com" };
    Pattern REGEX = Pattern.compile("(?i)^(?:(?:https?|ftp)://)(?:\\S+(?::\\S*)?@)?(?:(?!(?:10|127)(?:\\.\\d{1,3}){3})(?!(?:169\\.254|192\\.168)(?:\\.\\d{1,3}){2})(?!172\\.(?:1[6-9]|2\\d|3[0-1])(?:\\.\\d{1,3}){2})(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}(?:\\.(?:[1-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))|(?:(?:[a-z\\u00a1-\\uffff0-9]-*)*[a-z\\u00a1-\\uffff0-9]+)(?:\\.(?:[a-z\\u00a1-\\uffff0-9]-*)*[a-z\\u00a1-\\uffff0-9]+)*(?:\\.(?:[a-z\\u00a1-\\uffff]{2,}))\\.?)(?::\\d{2,5})?(?:[/?#]\\S*)?$");
    for (String url : URLs) {
        Matcher matcher = REGEX.matcher(url);
        if (matcher.find()) {
            System.out.println(matcher.group());
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

结果

http://www.google.com

http://google.com/

我想要做的是以上所有URL都有效.

我该如何解决这个问题呢?

任何评论将不胜感激.谢谢.

更新

我摆脱了方案部分,并在答案之后的域部分添加了|*和| \.*(|*和|.*给了我一个错误 - 无效的转义序列(有效的是\ b\t \n\f\r \n \"\') - 但我不确定更改是否正确).

现在它不允许"google.com"; …

java regex url-validation

5
推荐指数
1
解决办法
334
查看次数

标签 统计

java ×1

regex ×1

url-validation ×1