Java 给定一个字符串,找出它是否满足IPv4地址命名规则(代码检查),而不是寻找其他解决方案
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 以下是我的解决方案: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
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接受一个正则表达式,您将句点放在方括号中以转义它,而不是使用“\\”。