• 算法
    • 1.分别验证IPv4和IPv6
    • 2.注意事项
      • 2.1 分割字符串时,使用limit = -1的split函数,使得字符串末尾或开头有一个'.'或':'也能分割出空的字符串
      • 2.2 使用Integer.parseInt()函数检查异常
public String validIPAddress(String IP) {
    return validIPv4(IP) ? "IPv4" : (validIPv6(IP) ? "IPv6" : "Neither");
}

private boolean validIPv4(String IP) {
    String[] strs = IP.split("\\.", -1);
    if (strs.length != 4) {
        return false;
    }

    for (String str : strs) {
        if (str.length() > 1 && str.startsWith("0")) {
            return false;
        }
        try {
            int val = Integer.parseInt(str);
            if (!(val >= 0 && val <= 255)) {
                return false;
            }
        } catch (NumberFormatException numberFormatException) {
            return false;
        }
    }
    return true;
}

private boolean validIPv6(String IP) {
    String[] strs = IP.split(":", -1);
    if (strs.length != 8) {
        return false;
    }

    for (String str : strs) {
        if (str.length() > 4 || str.length() == 0) {
            return false;
        }
        try {
            int val = Integer.parseInt(str, 16);
        } catch (NumberFormatException numberFormatException) {
            return false;
        }
    }
    return true;
}