java 校驗IP地址。自持配置通配符

  /**
     * @Author robin.zhang
     * @Date 2019/7/29 13:52
     * @Param
     * @return
     * @Description validlIP 校驗ip是否有效
     * validlIP 可能的格式,如:
     * 10.2.0.1
     * 10.2.0.*
     * 10.2.*.*
     * 10.*.*.*
     * *.*.*.*
     * ip 的格式一定爲10.2.0.2
     **/
    public static Boolean validIp(String validlIP,String ip){
        if (!StringUtils.hasText(validlIP)) {
            return true;
        }
        validlIP = validlIP.trim();
        if (!StringUtils.hasText(ip)) {
            return false;
        }
        ip = ip.trim();
        String ipReg = "^((1\\d{2}|2[0-4]\\d|25[0-5]|[1-9]\\d|[1-9])|\\*)\\."
                + "((1\\d{2}|2[0-4]\\d|25[0-5]|[1-9]\\d|\\d)|\\*)\\."
                + "((1\\d{2}|2[0-4]\\d|25[0-5]|[1-9]\\d|\\d)|\\*)\\."
                + "((1\\d{2}|2[0-4]\\d|25[0-5]|[1-9]\\d|\\d)|\\*)$";
        /**校驗ip的格式*/
        Pattern pattern = Pattern.compile(ipReg);
        Matcher ipMatcher = pattern.matcher(ip);
        if (!ipMatcher.matches()) {
            return false;
        }
        /**validlIP 的格式*/
        Pattern oriPattern = Pattern.compile(ipReg);
        Matcher oriMatcher = oriPattern.matcher(validlIP);
        if (!oriMatcher.matches()) {
            return false;
        }
        /**validlIP 相同*/
        if(validlIP.equals(ip)){
            return true;
        }
        /**校驗ip是否處在validlIP段內*/
        String[] oriIpArr = validlIP.split("\\.");
        String[] ipArr = ip.split("\\.");
        Boolean hasStar=false;
        String star = "*";
        for(int i=0;i<oriIpArr.length;i++){
            String oriIp = oriIpArr[i];
            boolean flag = oriIp.equals(star) ;
            if(flag){
                hasStar=flag;
            }
            if(hasStar && !flag){
                return false;
            }
            if(!ipArr[i].equals(oriIp) && !oriIp.equals(star)){
                return false;
            }
        }
        return true;
    }

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章