zoukankan      html  css  js  c++  java
  • java用正则表达式获取domain

      在工作中经常用到获取url的来源和域名的黑白名单功能.前段时间写了一个获取url中域名的方法.但是在测试过程中发现有些小问题.

        

        /**
         * 根据URL获取domain
         * @param url
         * @return
         */
        public static String getDomainForUrl(String url){
            
            String domainUrl = null;
            if (url == null) {
                return null;
            } else {
                Pattern p = Pattern.compile("(?<=http://|\.)[^.]*?\.(com|cn|net|org|biz|info|cc|tv)",Pattern.CASE_INSENSITIVE);
                Matcher matcher = p.matcher(url);
                matcher.find();
                domainUrl = matcher.group();
                return domainUrl;
            }
        }

      下面是测试方法

        

        public static void main(String[] args) {
    
            System.out.println(getDomainForUrl("www.likunran.com"));
            System.out.println(getDomainForUrl("www.likunran.com"));
            System.out.println(getDomainForUrl("atongbei.likunran.com.taobao.com"));
    
        }

    执行结果

    likunran.com
    likunran.com
    likunran.com

      发现当域名正常时候取出来域名是正常的.如果域名里包含自己的域名就跪了.经过分析是正则表达式的匹配顺序有问题.故修改代码如下

        

        /**
         * 根据URL获取domain
         * @param url
         * @return
         */
        public static String getDomainForUrl(String url){
            
            String domainUrl = null;
            if (url == null) {
                return null;
            } else {
                Pattern p = Pattern.compile("(?<=http://|\.)[^.]*?\.(com|cn|net|org|biz|info|cc|tv)",Pattern.CASE_INSENSITIVE);
                Matcher matcher = p.matcher(url);
                while(matcher.find()){
                    domainUrl = matcher.group();
                }
                return domainUrl;
            }
        }

    修改后测试结果

    likunran.com
    likunran.com
    taobao.com

  • 相关阅读:
    怎么获取数组中的对象的某一项之和
    原型链
    js的事件循环(Eventloop) 机制/js的宏任务微任务执行顺序
    怎么替换数组中对象的属性
    求对象所有值的和
    sequelize中duplicating:false的使用
    WebSocket
    轮播

    ssl tsl
  • 原文地址:https://www.cnblogs.com/Traner/p/3208313.html
Copyright © 2011-2022 走看看