簡體   English   中英

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

[英]How to check IP and CIDR format in Java effectively?

我剛剛檢查了這篇文章以進行 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地址。

有更好的想法嗎?

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());

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM