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())