• Common class for judge IPV6 or IPV4


    import java.util.regex.Pattern;
    
    import org.apache.http.annotation.Immutable;
    
    /**
     * A collection of utilities relating to InetAddresses.
     *
     * @since 4.0
     */
    @Immutable
    public class InetAddressUtils {
    
        private InetAddressUtils() {
        }
    
        private static final String IPV4_BASIC_PATTERN_STRING =
                "(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}" + // initial 3 fields, 0-255 followed by .
                 "([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])"; // final field, 0-255
    
        private static final Pattern IPV4_PATTERN =
            Pattern.compile("^" + IPV4_BASIC_PATTERN_STRING + "$");
    
        private static final Pattern IPV4_MAPPED_IPV6_PATTERN = // TODO does not allow for redundant leading zeros
                Pattern.compile("^::[fF]{4}:" + IPV4_BASIC_PATTERN_STRING + "$");
    
        private static final Pattern IPV6_STD_PATTERN =
            Pattern.compile(
                    "^[0-9a-fA-F]{1,4}(:[0-9a-fA-F]{1,4}){7}$");
    
        private static final Pattern IPV6_HEX_COMPRESSED_PATTERN =
            Pattern.compile(
                    "^(([0-9A-Fa-f]{1,4}(:[0-9A-Fa-f]{1,4}){0,5})?)" + // 0-6 hex fields
                     "::" +
                     "(([0-9A-Fa-f]{1,4}(:[0-9A-Fa-f]{1,4}){0,5})?)$"); // 0-6 hex fields
    
        /*
         *  The above pattern is not totally rigorous as it allows for more than 7 hex fields in total
         */
        private static final char COLON_CHAR = ':';
    
        // Must not have more than 7 colons (i.e. 8 fields)
        private static final int MAX_COLON_COUNT = 7;
    
        /**
         * Checks whether the parameter is a valid IPv4 address
         *
         * @param input the address string to check for validity
         * @return true if the input parameter is a valid IPv4 address
         */
        public static boolean isIPv4Address(final String input) {
            return IPV4_PATTERN.matcher(input).matches();
        }
    
        public static boolean isIPv4MappedIPv64Address(final String input) {
            return IPV4_MAPPED_IPV6_PATTERN.matcher(input).matches();
        }
    
        /**
         * Checks whether the parameter is a valid standard (non-compressed) IPv6 address
         *
         * @param input the address string to check for validity
         * @return true if the input parameter is a valid standard (non-compressed) IPv6 address
         */
        public static boolean isIPv6StdAddress(final String input) {
            return IPV6_STD_PATTERN.matcher(input).matches();
        }
    
        /**
         * Checks whether the parameter is a valid compressed IPv6 address
         *
         * @param input the address string to check for validity
         * @return true if the input parameter is a valid compressed IPv6 address
         */
        public static boolean isIPv6HexCompressedAddress(final String input) {
            int colonCount = 0;
            for(int i = 0; i < input.length(); i++) {
                if (input.charAt(i) == COLON_CHAR) {
                    colonCount++;
                }
            }
            return  colonCount <= MAX_COLON_COUNT && IPV6_HEX_COMPRESSED_PATTERN.matcher(input).matches();
        }
    
        /**
         * Checks whether the parameter is a valid IPv6 address (including compressed).
         *
         * @param input the address string to check for validity
         * @return true if the input parameter is a valid standard or compressed IPv6 address
         */
        public static boolean isIPv6Address(final String input) {
            return isIPv6StdAddress(input) || isIPv6HexCompressedAddress(input);
        }
    
    }
  • 相关阅读:
    TCP Data Flow and Window Management(3)
    全渠道java b2b b2c o2o平台
    springmvc mybatis shiro ios android构建cms系统
    电子商务系统+java+web+完整项目+包含源码和数据库Java实用源码
    大型互联网 b2b b2c o2o 电子商务微服务云平台
    mybatis电子商务平台b2b2c
    spring mvc mybatis shiro构建cms系统ios android
    spring mvc+mybatis 构建 cms + 实现UC浏览器文章功能
    b2b b2c o2o电子商务微服务云平台
    java分布式电子商务云平台b2b b2c o2o需要准备哪些技术??
  • 原文地址:https://www.cnblogs.com/softidea/p/3334433.html
Copyright © 2020-2023  润新知