Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 给定一个字符串,找出它是否满足IPv4地址命名规则(代码检查),而不是寻找其他解决方案_Java_Regex_String_Arrayofstring - Fatal编程技术网

Java 给定一个字符串,找出它是否满足IPv4地址命名规则(代码检查),而不是寻找其他解决方案

Java 给定一个字符串,找出它是否满足IPv4地址命名规则(代码检查),而不是寻找其他解决方案,java,regex,string,arrayofstring,Java,Regex,String,Arrayofstring,IP地址是分配给参与使用Internet协议进行通信的计算机网络的每个设备(例如,计算机、打印机)的数字标签。因特网协议有两个版本,因此地址有两个版本。其中之一是IPv4地址 IPv4地址以点十进制表示法表示,它由四个十进制数字组成,每个数字的范围为0到255(含0到255),用点分隔,例如172.16.254.1 对于inputString=“172.16.254.1”,输出应为 isIPv4Address(inputString)=真 对于inputString=“172.316.254.1

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

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

对于inputString=“172.16.254.1”,输出应为 isIPv4Address(inputString)=真

对于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;
}
布尔isIPv4Address(字符串输入字符串){
String splitparts[]=inputString.split(“[.]”);
if(splitparts.length!=4){
返回false;
}
用于(字符串部分:拆分部分){
if(part.isEmpty())
返回false;
如果(!part.matches(“[0,9]{1,3}”))
返回false;

如果(!(Integer.parseInt(part)>=0&&Integer.parseInt(part)您的问题在于[0,9]{1,3}。在[]块中,您应该使用-来表示一个范围。它应该是[0-9]{1,3}。它在字符串中查找一行中的1到3个字符,这些字符是“0”、文字字符串“、”或“9”。如果希望它只接受长度为1到3个字符的字符串,可以执行以下操作:

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

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

使用调试器,或者在代码的每个分支中添加System.out.println()语句,您就会知道。没问题!作为参考,您实际上利用了[]在代码的早期工作——split接受一个正则表达式,您将句点放在方括号中以转义它,而不是使用“\\”。