import java.util.Scanner;
public class ip_test {
/*
* IP的格式:(1~255).(0~255).(0~255).(0~255)
*
*/
public static void main(String[] args){
System.out.println("请输入ip");
String ip; // 接收传过来的ip
Scanner sc = new Scanner(System.in);
ip = sc.next();
//方法一
boolean isIpLegal = isIpLegal(ip);
if(isIpLegal){
System.out.println(ip + "合法");
}else{
System.out.println(ip + "不合法");
}
}
public static boolean isIpLegal(String str){
//检查ip是否为空
if(str == null){
return false;
}
//检查ip长度,最短为:x.x.x.x(7位) 最长为:xxx.xxx.xxx.xxx(15位)
if(str.length() <7 || str.length() >15){
System.out.print(str +" 长度不正确");
return false;
}
//对输入字符串的首末字符判断,如果是 "." 则是非法IP
// charAt() 方法用于返回指定索引处的字符。索引范围为从 0 到 length() - 1
if(str.charAt(0) == '.' || str.charAt(str.length() - 1) == '.'){
System.out.println(str + "首尾字符不正确");
return false;
}
//按 "." 分割字符串,并判断分割出来的个数,如果不是4个,则是非法IP
String[] arr = str.split("\\.");
if(arr.length !=4){
System.out.println("字符串个数不对");
return false;
}
//对分割出来的每个字符串进行单独判断
for(int i =0;i<arr.length;i++){
//如果每个字符串不是一位字符,且以 '0' 开头,则是非法的ip,如:01.123.23.124 ,
if(arr[i].length() > 1 && arr[i].charAt(0) == '0'){
System.out.println("非法ip");
return false;
}
// 对每个字符串的每个字符进行逐一判断,如果不是数字0-9,则是非法的ip 如: 64.12.22.-1 针对 6、4、1、2、2、2、-1 逐个数字判断
for(int j =0; j < arr[i].length();j++){
if(arr[i].charAt(j)<'0' || arr[i].charAt(j) > '9'){
System.out.println("字符有不符合规定的");
return false;
}
}
}
//对拆分的每一个字符串进行转换成数字,并判断是否在 0 ~ 255
for(int i = 0; i < arr.length; i++){
int temp = Integer.parseInt(arr[i]);
if(i == 0){
if (temp < 1 || temp > 255){
return false;
}
}
else{
if(temp < 0 || temp > 255){
return false;
}
}
}
return true;
}
}
Java对ip地址校验
精选 原创
©著作权归作者所有:来自51CTO博客作者海阔凭鱼跃666的原创作品,请联系作者获取转载授权,否则将追究法律责任
上一篇:Java 判断闰年
下一篇:Java对ip地址校验
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
java手机号校验规则最新
Java手机号校验规则。
正则表达式 Java 字符串