请叫我头头哥

Java正则匹配域名白名单

v博客前言

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

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

posted @   请叫我头头哥  阅读(656)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
历史上的今天:
2021-02-18 SpringBoot进阶教程(七十一)详解Prometheus+Grafana
//Setting ico for cnblogs
点击右上角即可分享
微信分享提示