android ip 格式

本文介绍了一种在Android中验证IP地址格式的有效方法,并详细解释了正则表达式的使用,确保每个段落的数值范围在0到255之间。此外,还提供了解决方案以消除用户输入前导零的问题。

 android中判断ip格式包括判断每位都在0~255之间

//    \d 为[0-9],{1,2}从中取任意数组成1位或2位的数字,

//  则:\d{1,2} 代表0~99,0\d{1,2} 代表00~099,显然00\d 代表000~009

//   1\d\d    代表100~199,

//  2[0-4]\d 代表200~249

//25[0-5]    代表250~255

//上面高亮部分有人会说多余,但 测试人员 非要说容许用户输入类似001.001.001.001这样的ip地址,所以说 伤不起啊

Pattern p =  Pattern.compile(\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3});  // 此方法最简单但不判断大于255的情况

Pattern p =  Pattern.compile("^(\\d{1,2}|0\\d{1,2}|00\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\." +
                                       "(\\d{1,2}|0\\d{1,2}|00\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\." +
                                       "(\\d{1,2}|0\\d{1,2}|00\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\." +
                                      "(\\d{1,2}|0\\d{1,2}|00\\d|1\\d\\d|2[0-4]\\d|25[0-5])$");

  Matcher m = p.matcher(ip);

  m.matches()//返回布尔型

//正如上面所说如果用户输入了类似001.001.001.001和01.01.001.1其实是同一个ip,但保存时会保存为两个,所以还要把1前面的0过滤掉在保存。    

      * 取出ip中“0”,例如 001.001.2.01
     *        改为 1.1.2.1
     * 避免同一个ip在登录时选择出现两次,即避免001.001.2.01 和 1.1.2.1 都出现。
     */
   

String ip = logininf.serverIP[0];
String[] sIp = ip.split("\\.");// split 中分割‘.’要用'\\'
    ip = "";
    for(int i = 0; i < sIp.length; i++){
     if(sIp[i].length() != 1){
      
      for(int j = 0; j < sIp[i].length(); j++){ //sIp[i].length()有几位就判断几次
       int a  = sIp[i].indexOf("0");
       if(a == -1){       //没有0的情况
        
        break;
       }
       else if(a==0){    //有0并且是第一位
        sIp[i] = sIp[i].replaceFirst("0", ""); //依次替换,这里不能用replace()方法会把‘10’这里的0也替换掉。
       }
      }
     }
     ip += "."+sIp[i];
    }  
 //去除第一个“.”   
ip = ip.substring(1,ip.length())   


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值