首页 > 编程语言 >Java正则匹配域名白名单

Java正则匹配域名白名单

时间:2023-02-18 21:25:26浏览次数:54  
标签:return String url Pattern urlDecode 正则 白名单 Java target

在上一篇文章《通用正则表达式开源工具,为开源绵尽薄力 》中,我们介绍了很多正则表达式的实例,工作中大家也经常遇到新的规则需要匹配,今天就看一下检测域名白名单的几种方式。

v方式一

    /**
     * * 获取网址 URL 的一级域名
     * http://detail.tmall.com/item.htm?spm=a230r.1.10.44.1xpDSH&id=15453106243&_u=f4ve1uq1092 ->> tmall.com
     *
     * @param url
     * @return
     */
    private static Pattern p = Pattern.compile("(?<=http://|\\.)[^.]*?\\.(com|cn|net|org|biz|info|cc|tv)", Pattern.CASE_INSENSITIVE);

    public static String getDomain(String url) {
        // 获取完整的域名
        // Pattern p=Pattern.compile("[^//]*?\\.(com|cn|net|org|biz|info|cc|tv)", Pattern.CASE_INSENSITIVE);
        Matcher matcher = p.matcher(url);
        matcher.find();
        return matcher.group();
    }

v方式二

    /**
     * 检测域名
     * @param url    原始url
     * @param target 需要检测的url
     * @return
     */
    public static boolean checkDomain(String url, String target){
        String urlDecode = url;
        try {
            urlDecode = URLDecoder.decode(url);
        }catch (Exception e){

        }

        Pattern pattern = Pattern.compile("://(.*?)/", Pattern.CASE_INSENSITIVE);
        Matcher matcher = pattern.matcher(urlDecode);
        matcher.find();
        String domain = matcher.group(1);
        if(!Strings.isNullOrEmpty(domain)){
            if(domain.contains(target)){
                return true;
            }
        }

        return false;
    }

v方式三

    /**
     * 检测域名
     * @param url    原始url
     * @param target 需要检测的url
     * @return
     */
    public static boolean checkDomain2(String url, String target){
        String urlDecode = url;
        try {
            urlDecode = URLDecoder.decode(url);
        }catch (Exception e){

        }

        String pattern = "https?://[^/]*" + target + "/.*";
        boolean isMatch = Pattern.matches(pattern, urlDecode);
        return isMatch;
    }

v源码地址

https://github.com/toutouge/TouTou.RegexTool


作  者:请叫我头头哥
出  处:http://www.cnblogs.com/toutou/
关于作者:专注于基础平台的项目开发。如有问题或建议,请多多赐教!
版权声明:本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接。
特此声明:所有评论和私信都会在第一时间回复。也欢迎园子的大大们指正错误,共同进步。或者直接私信
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是作者坚持原创和持续写作的最大动力!

标签:return,String,url,Pattern,urlDecode,正则,白名单,Java,target
From: https://www.cnblogs.com/toutou/p/regextool2.html

相关文章

  • JAVA多线程(二)--线程池
    JAVA多线程(二)--线程池一、线程池概念顾名思义,线程池是管理线程的池子。使用线程池有以下优点:降低线程创建和销毁的开销。提高响应速度。用到时创建和直接使用已创建......
  • Java代码工具快速生成词云图(强烈建议收藏)
    “词云”一词最早是由美国西北大学新闻学副教授、新媒体专业主任里奇戈登(RichGordon)提出的。词云(WordCloud),又称文字云、标签云(TagCloud)、关键词云(KeywordCloud),是对文本......
  • Java 只有值传递
    实参:传递给方法的参数,必须有确定的值。形参:定义方法的参数,接收实参,不需要有确定的值值传递:方法接收的是实参值的拷贝,会创建副本。引用传递:方法接收的是实参所引用的......
  • 算法刷题-计算某字符出现次数-JAVA
    0x00引言为获取一个良好的算法思维,以及不再成为一个脚本小子,争取每天一道算法题,培养自己的逻辑思维,温顾各类型语言语法知识。题解只写自己理解的解法,其他解法不再增加。......
  • Error:(3, 32) java: 无法访问org.springframework.boot.SpringApplication,错误的类文
    启动Springboot项目报错 这是Springboot的版本和Java的版本不对应导致的。 Springboot2.0以上版本最低需要java8支持;Springboot3.0以上的版本最低需要java17支持!参......
  • JAVASE小练习 (今天做一个基于javase的银行ATM小练习)
    实现的功能有1,用户登录2,用户开户(基于用户登录)3,查询账户(基于用户登录)4,存款5,取款6,转账7,修改密码(只有三次确认密码的机会)8,退出登录9,注销这个小例子可以让我们充分复习所学......
  • jmeter远程启动报:Connection refused to host: 127.0.0.1; nested exception is: ja
    jmeter.properties文档中如下设置:(本地机器当从机127.0.0.1) 在jmeter中 运行->远程启动127.0.0.1:4445 时,报错:Connectionrefusedtohost:127.0.0.1;nestedexce......
  • JavaScript中数组是如何在内存中存储的?
    前言大家好,我是CoderBin,本次讲讲JavaScript中数组是如何在内存中存储的,希望对大家有所帮助,谢谢。如果文中有不对、疑惑的地方,欢迎在评论区留言指正......
  • java处理异常这一篇就够了
    java异常packagecom.text01;importjava.util.Scanner;publicclassText{publicstaticvoidmain(String[]args){//实现一个功能://键盘录入俩个......
  • 学习java周记
    ​个人感想    第一感觉就是学习很吃力,刚开始第一周接触的是HTMl,很多东西并不能很好的理解,主要是对英语单词不明白意思,哪怕是很基础的也需要进行翻译花费不少时间。......