0

IP 地址是分配给参与使用 Internet 协议进行通信的计算机网络的每个设备(例如,计算机、打印机)的数字标签。Internet 协议有两个版本,因此地址也有两个版本。其中之一是 IPv4 地址。

IPv4 地址以点十进制表示法表示,它由四个十进制数字组成,每个数字的范围从 0 到 255(含),用点分隔,例如 172.16.254.1。

对于 inputString = "172.16.254.1",输出应该是 isIPv4Address(inputString) = true;

对于 inputString = "172.316.254.1",输出应该是 isIPv4Address(inputString) = false

这是我的解决方案:

boolean isIPv4Address(String inputString) {
    String splitparts[] = inputString.split("[.]");
    if(splitparts.length != 4){
        return false;
    }
    for(String part : splitparts){
        if(part.isEmpty())
            return false;

        if(!part.matches("[0,9]{1,3}"))
            return false;

        if(!(Integer.parseInt(part)>=0 && Integer.parseInt(part)<=255))
            return false;
    }

    return true;
}

我的解决方案在所有情况下都返回 false,我无法找出错误的原因。如果有人审查我的代码并向我解释为什么它只返回错误,那就太好了。

4

1 回答 1

1

您的问题在于 [0,9]{1,3}。在 [] 块内,您应该使用 - 来指示范围。它应该是 [0-9]{1,3}。它在字符串内部连续查找 1 到 3 个字符,它们是 "0" 、文字字符串 "," 或 "9"。如果你希望它只接受 1 到 3 个字符长的字符串,你可以这样做:

^[0-9]{1,3}$

^ 表示开始,$ 表示结束。

于 2018-06-19T20:41:12.340 回答