longyvfengyun
2023-12-25 d8d792a6842832e8f6af6604274c438b25053afe
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
function ipTest(str) {
  let result = {
    code: 0,
    msg: "",
  };
  let list = str.split(",");
  if(list.length == 0) {
    result.code = 0;
    result.msg = "IP白名单不能为空!";
  }else {
    let code = list.every(value=>{
      if(value == "*") {
        return true;
      }
      let regexp = /^\d{1,3}\.(\d{1,3}|\*)\.(\d{1,3}|\*)\.(\d{1,3}|\*)$/;
      let valid = regexp.test(value);
 
      if(!valid){
        //首先必须是 xxx.xxx.xxx.xxx 类型的数字,如果不是,返回false
        result.msg = "必须是 xxx.xxx.xxx.xxx 类型的数字";
        return false;
      }
      return value.split('.').every(function(num){
        //切割开来,每个都做对比,可以为0,可以小于等于255,但是不可以0开头的俩位数
        //只要有一个不符合就返回false
        if(num.length > 1 && num.charAt(0) === '0'){
          //大于1位的,开头都不可以是‘0’
          result.msg = "大于1位的,开头都不可以是‘0’";
          return false;
        }else if(parseInt(num , 10) > 255){
          //大于255的不能通过
          result.msg = "大于255的不能通过";
          return false;
        }
        return true;
      });
    });
    result.code = code?1:0;
  }
  return result;
}
export default ipTest;