问题描述
判断字符串是否是合法的ipv4地址
ipv4地址特点
比如 123.1.33.2
有四位,每一位之间直接用.分割,每一位的范围是0-255,即在0.0.0.0到255.255.255.255之间
(方法1)
将当前字符串分割为字符数组(注意分隔符.需要转义写成\\.),然后判断每一位的范围是否在0-255之间,如果在0-255之间,判断是否当前字符是否以0结尾同时不是第一位(比如01.11.11.11不是合法的ipv4地址)
boolean checkIp(String ip) throws Exception{
String arrs[]=ip.split("\\.");//.转义
if (arrs.length!=4) {
return false;
}
for(int i=0;i<arrs.length;i++) {
Integer num=null;
try {
num=Integer.parseInt(arrs[i]);
if (num<0||num>255) {
return false;
}
if (!num.equals("0")&&arrs[i].startsWith("0")) {//避免01出现
return false;
}
} catch (NumberFormatException e) {
// TODO: handle exception
return false;
}
}
return true;
}
(方法2)使用正则表达式
boolean checkIp2(String ip) throws Exception{
String arrs[]=ip.split("\\.");//.转义
if (arrs.length!=4) {
return false;
}
String reg="\\d||[1,9]\\d{1,2}";
for(String arr:arrs) {
try {
if (!arr.matches(reg)||Integer.parseInt(arr)>255) {
return false;
}
} catch (NumberFormatException e) {
// TODO: handle exception
}
}
return true;
}