/**
* @Author robin.zhang
* @Date 2019/7/29 13:52
* @Param
* @return
* @Description validlIP 校驗ip是否有效
* validlIP 可能的格式,如:
* 10.2.0.1
* 10.2.0.*
* 10.2.*.*
* 10.*.*.*
* *.*.*.*
* ip 的格式一定爲10.2.0.2
**/
public static Boolean validIp(String validlIP,String ip){
if (!StringUtils.hasText(validlIP)) {
return true;
}
validlIP = validlIP.trim();
if (!StringUtils.hasText(ip)) {
return false;
}
ip = ip.trim();
String ipReg = "^((1\\d{2}|2[0-4]\\d|25[0-5]|[1-9]\\d|[1-9])|\\*)\\."
+ "((1\\d{2}|2[0-4]\\d|25[0-5]|[1-9]\\d|\\d)|\\*)\\."
+ "((1\\d{2}|2[0-4]\\d|25[0-5]|[1-9]\\d|\\d)|\\*)\\."
+ "((1\\d{2}|2[0-4]\\d|25[0-5]|[1-9]\\d|\\d)|\\*)$";
/**校驗ip的格式*/
Pattern pattern = Pattern.compile(ipReg);
Matcher ipMatcher = pattern.matcher(ip);
if (!ipMatcher.matches()) {
return false;
}
/**validlIP 的格式*/
Pattern oriPattern = Pattern.compile(ipReg);
Matcher oriMatcher = oriPattern.matcher(validlIP);
if (!oriMatcher.matches()) {
return false;
}
/**validlIP 相同*/
if(validlIP.equals(ip)){
return true;
}
/**校驗ip是否處在validlIP段內*/
String[] oriIpArr = validlIP.split("\\.");
String[] ipArr = ip.split("\\.");
Boolean hasStar=false;
String star = "*";
for(int i=0;i<oriIpArr.length;i++){
String oriIp = oriIpArr[i];
boolean flag = oriIp.equals(star) ;
if(flag){
hasStar=flag;
}
if(hasStar && !flag){
return false;
}
if(!ipArr[i].equals(oriIp) && !oriIp.equals(star)){
return false;
}
}
return true;
}