zhangzengfei
2023-11-29 0d3db253cad1fb49c4fae9b9a537c8c318c7172f
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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
/* eslint-disable */
 
export function isExternal(path) {
  return /^(https?:|mailto:|tel:)/.test(path)
}
 
export function validUsername(str) {
  const validMap = ['admin', 'editor']
  return validMap.indexOf(str.trim()) >= 0
}
 
/* 合法uri */
export function validURL(url) {
  const reg = /^(https?|ftp):\/\/([a-zA-Z0-9.-]+(:[a-zA-Z0-9.&%$-]+)*@)*((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]?)(\.(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])){3}|([a-zA-Z0-9-]+\.)*[a-zA-Z0-9-]+\.(com|edu|gov|int|mil|net|org|biz|arpa|info|name|pro|aero|coop|museum|[a-zA-Z]{2}))(:[0-9]+)*(\/($|[a-zA-Z0-9.,?'\\+&%$#=~_-]+))*$/
  return reg.test(url)
}
 
/* 小写字母 */
export function validLowerCase(str) {
  const reg = /^[a-z]+$/
  return reg.test(str)
}
 
/* 大写字母 */
export function validUpperCase(str) {
  const reg = /^[A-Z]+$/
  return reg.test(str)
}
 
/* 大小写字母 */
export function validAlphabets(str) {
  const reg = /^[A-Za-z]+$/
  return reg.test(str)
}
 
/**
 * validate email
 * @param email
 * @returns {boolean}
 */
export function validEmail(rule, value, callback) {
  const re = /^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/
  if (re.test(value)) {
    return callback()
  }
  return callback(new Error('输入的邮箱错误'))
}
 
export function isPhone(rule, value, callback) {
  if (!value) {
    return callback(new Error('输入不可以为空'));
  }
  var pattern = /^1[345789]\d{9}$/
  if (pattern.test(value)) {
    return callback()
  }
  return callback(new Error('输入的手机号错误'))
}
 
export function isIDCard(rule, idcode, callback) {
  if (idcode==""||idcode===undefined) {
    return callback()
  }
  var weight_factor = [7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2];
  var check_code = ['1', '0', 'X' , '9', '8', '7', '6', '5', '4', '3', '2'];
 
  var code = idcode + "";
  var last = idcode[17];//最后一位
 
  var seventeen = code.substring(0,17);
 
  var arr = seventeen.split("");
  var len = arr.length;
  var num = 0;
  for(var i = 0; i < len; i++){
      num = num + +arr[i] * weight_factor[i];
  }
  
  var resisue = num%11;
  var last_no = check_code[resisue];
 
  var idcard_patter = /^[1-9][0-9]{5}([1][9][0-9]{2}|[2][0][0|1][0-9])([0][1-9]|[1][0|1|2])([0][1-9]|[1|2][0-9]|[3][0|1])[0-9]{3}([0-9]|[X])$/;
 
  var format = idcard_patter.test(idcode);
  return last === last_no && format ? callback() : callback(new Error('身份证号格式错误'));
}
 
export function isIPv4(rule, value, callback) {
  if (!value) {
    return callback(new Error('输入不可以为空'));
  }
 
  const re = /^(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])$/
  if (re.test(value)) {
    return callback()
  }
  return callback(new Error('请输入正确的IP地址'))
}
 
export function isPort(rule, value, callback) {
  if (!value) {
    return callback(new Error('输入不可以为空'));
  }
  setTimeout(() => {
    if (value == '' || typeof (value) == undefined) {
      callback(new Error('请输入端口值'));
    } else {
      const re = /^([0-9]|[1-9]\d|[1-9]\d{2}|[1-9]\d{3}|[1-5]\d{4}|6[0-4]\d{3}|65[0-4]\d{2}|655[0-2]\d|6553[0-5])$/;
      const rsCheck = re.test(value);
      if (!rsCheck) {
        callback(new Error('请输入在[0-65535]之间的端口值'));
      } else {
        callback();
      }
    }
  }, 1000);
}
 
//校验域名
export function vaildHost(str) {
  let re = /^(?=^.{3,255}$)(http(s)?:\/\/)?(www\.)?[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(\.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+(:\d+)*(\/\w+\.\w+)*$/
  return re.test(str)
}
 
//校验自然数(非负整数)
export function isNonnegativeInteger(rule, value, callback) {
  if(!value){
    return callback(new Error('输入不能为空'));
  }
  const reg = /^\d+$/;
  if(!reg.test(value)){
    return callback(new Error('请输入非负整数'));
  }
  return callback()
}