如何有效地检查Java中的IP和CIDR格式?

时间:2018-03-29 02:10:19

标签: java ip cidr

我刚刚检查了这个post进行IP检查,而SubnetUtils检查了CIDR格式。

private boolean isValidCidrIp(String cidrIp) {
    boolean isValid = true;
    try {
        new SubnetUtils(cidrIp);
    } catch (IllegalArgumentException e) {
        isValid = false;
    }
    return isValid;
}

但我真的不想import一个包,因为我想检查IP和CIDR,如果我有其他选择。

所以我想出了这个Regx模式:

private static final Pattern IP_V4_PATTERN = Pattern.compile( "^(([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\.){3}([01]?\\d\\d?|2[0-4]\\d|25[0-5])(/([0-2]?\\d?|3[0-2]))?$");

但它似乎不够好,其中包括每个字段的一些丑陋的前导0。更糟糕的是,会有很多无效的IP地址。

有更好的想法吗?

1 个答案:

答案 0 :(得分:-1)

Pattern cidrPattern = Pattern.compile("(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})/(\\d{1,3})");

System.out.println(cidrPattern.matcher("192.168.30.0/24").matches());
System.out.println(cidrPattern.matcher("192.168.30.160").matches());