-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathvalidator.js
259 lines (235 loc) · 8.85 KB
/
validator.js
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
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
// 校验真实中文姓名(2 - 20 位汉字)
const validateRealName = (rule, value, callback) => {
const reg = /^[\u4e00-\u9fa5]{2,20}$/;
const errors = [];
if (value && reg.test(value) === false) {
errors.push(new Error(`姓名格式不符`, rule.field));
}
callback(errors);
};
// 校验用户名(字母数字下划线中文 2 - 20 位)
const validateUserName = (rule, value, callback) => {
const reg = /^[a-zA-Z\d_\u4e00-\u9fa5]{2,20}$/;
const errors = [];
if (value && reg.test(value) === false) {
errors.push(new Error(`用户名格式不符`, rule.field));
}
callback(errors);
};
// 校验手机号
const validatePhone = (rule, value, callback) => {
const reg = /^(13[0-9]|14[0-9]|15[0-9]|166|17[0-9]|18[0-9]|19[5|8|9])\d{8}$/;
const errors = [];
if (value && reg.test(value) === false) {
errors.push(new Error(`手机号码格式不符`, rule.field));
}
callback(errors);
};
// 校验 Email
const validateEmail = (rule, value, callback) => {
const reg = /^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/;
const errors = [];
if (value && reg.test(value) === false) {
errors.push(new Error(`邮箱地址格式不符`, rule.field));
}
callback(errors);
};
// 校验 QQ 号(5 至 11 位数字)
const validateQQNum = (rule, value, callback) => {
const reg = /^[1-9][0-9]{4,10}$/;
const errors = [];
if (value && reg.test(value) === false) {
errors.push(new Error(`QQ号格式不符`, rule.field));
}
callback(errors);
};
// 校验 微信 号(6 至 20 位,以字母开头 + 字母,数字,减号,下划线)
const validateWeChatNum = (rule, value, callback) => {
const reg = /^[a-zA-Z]([-_a-zA-Z0-9]{5,19})+$/;
const errors = [];
if (value && reg.test(value) === false) {
errors.push(new Error(`微信号格式不符`, rule.field));
}
callback(errors);
};
// 校验车牌号
const validateLicensePlateNum = (rule, value, callback) => {
const reg =
/^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领A-Z]{1}[A-Z]{1}[A-Z0-9]{4}[A-Z0-9挂学警港澳]{1}$/;
const errors = [];
if (value && reg.test(value) === false) {
errors.push(new Error(`车牌号格式不符`, rule.field));
}
callback(errors);
};
// 校验颜色 rgb(a)
const validateColorRGB = (rule, value, callback) => {
// rgb 正则
const reg_rgb =
/^[rR][gG][bB][\(]([\s]*(2[0-4]\d|25[0-5]|[01]?\d\d?)[\s]*,){2}[\s]*(2[0-4]\d|25[0-5]|[01]?\d\d?)[\s]*[\)]{1}$/;
// rgba 正则
const reg_rgba =
/^[rR][gG][bB][aA][\(]([\s]*(2[0-4]\d|25[0-5]|[01]?\d\d?)[\s]*,){2}[\s]*(2[0-4]\d|25[0-5]|[01]?\d\d?),[\s]*(0?\.\d{1,2}|1|0)?[\)]{1}$/;
const errors = [];
if (value && reg_rgb.test(value) === false && reg_rgba.test(value) === false) {
errors.push(new Error(`颜色 rgb(a) 格式不符`, rule.field));
}
callback(errors);
};
// 校验颜色十六进制
const validateColorHex = (rule, value, callback) => {
const reg = /^#?([a-fA-F0-9]{6}|[a-fA-F0-9]{3})$/;
const errors = [];
if (value && reg.test(value) === false) {
errors.push(new Error(`颜色十六进制格式不符`, rule.field));
}
callback(errors);
};
// 校验 url
const validateUrl = (rule, value, callback) => {
const reg = /^((https?|ftp|file):\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?$/;
const errors = [];
if (value && reg.test(value) === false) {
errors.push(new Error(`url 地址格式不符`, rule.field));
}
callback(errors);
};
// 校验 IP-v4
const validateIPv4 = (rule, value, callback) => {
const reg = /^(25[0-5]|2[0-4]\d|[0-1]?\d?\d)(\.(25[0-5]|2[0-4]\d|[0-1]?\d?\d)){3}$/;
const errors = [];
if (value && reg.test(value) === false) {
errors.push(new Error(`IP-v4 地址格式不符`, rule.field));
}
callback(errors);
};
// 校验 IP-v6
const validateIPv6 = (rule, value, callback) => {
const reg =
/^([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])$/;
const errors = [];
if (value && reg.test(value) === false) {
errors.push(new Error(`IP-v6 地址格式不符`, rule.field));
}
callback(errors);
};
// 校验端口号(0一般作为保留端口,很少会用做输入,去掉0的正则表达式(不支持0))
const validatePort = (rule, value, callback) => {
const reg =
/^((6553[0-5])|(655[0-2][0-9])|(65[0-4][0-9]{2})|(6[0-4][0-9]{3})|([1-5][0-9]{4})|([0-5]{0,5})|([0-9]{1,4}))$/;
const errors = [];
if (value && reg.test(value) === false) {
errors.push(new Error(`端口号格式不符`, rule.field));
}
callback(errors);
};
// 校验设备 MAC 地址
const validateMacAddress = (rule, value, callback) => {
const reg = /^[a-fA-F0-9]{2}(:[a-fA-F0-9]{2}){5}$/;
const errors = [];
if (value && reg.test(value) === false) {
errors.push(new Error(`MAC 地址格式不符`, rule.field));
}
callback(errors);
};
// 校验中国地区邮政编码(6位数字)
const validateChinaZipCode = (rule, value, callback) => {
const reg = /^[1-9]\d{5}(?!\d)$/;
const errors = [];
if (value && reg.test(value) === false) {
errors.push(new Error(`邮政编码格式不符`, rule.field));
}
callback(errors);
};
// 校验身份证号(15位)
const validateCardID15 = (rule, value, callback) => {
const reg = /^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$/;
const errors = [];
if (value && reg.test(value) === false) {
errors.push(new Error(`身份证号码格式不符`, rule.field));
}
callback(errors);
};
// 校验身份证号(18位)
const validateCardID18 = (rule, value, callback) => {
const reg = /^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}([0-9]|X)$/;
const errors = [];
if (value && reg.test(value) === false) {
errors.push(new Error(`身份证号码格式不符`, rule.field));
}
callback(errors);
};
// 校验港澳台居民来往内地通行证号码
const validateHMTCardID = (rule, value, callback) => {
const reg = /^([A-Z]\d{6,10}(\(\w{1}\))?)$/;
const reg2 = /^\d{8}|^[a-zA-Z0-9]{10}|^\d{18}$/;
const errors = [];
if (value && (reg.test(value) === false || reg2.test(value) === false)) {
errors.push(new Error(`港澳台居民来往内地通行证号码格式不符`, rule.field));
}
callback(errors);
};
// 校验港澳居民来往内地通行证号码
const validateHMCardID = (rule, value, callback) => {
const reg = /^([A-Z]\d{6,10}(\(\w{1}\))?)$/;
const errors = [];
if (value && (reg.test(value) === false || reg2.test(value) === false)) {
errors.push(new Error(`港澳居民来往内地通行证号码格式不符`, rule.field));
}
callback(errors);
};
// 校验台湾居民来往内地通行证号码
const validateTCardID = (rule, value, callback) => {
const reg = /^\d{8}|^[a-zA-Z0-9]{10}|^\d{18}$/;
const errors = [];
if (value && reg.test(value) === false) {
errors.push(new Error(`台湾居民来往内地通行证号码格式不符`, rule.field));
}
callback(errors);
};
// 校验护照
const validatePassPortCard = (rule, value, callback) => {
const reg = /^([a-zA-z]|[0-9]){5,17}$/;
const errors = [];
if (value && reg.test(value) === false) {
errors.push(new Error(`护照号码格式不符`, rule.field));
}
callback(errors);
};
// 校验军官证
const validateOfficerCardID = (rule, value, callback) => {
const reg = /^[\u4E00-\u9FA5](字第)([0-9a-zA-Z]{4,8})(号?)$/;
const errors = [];
if (value && reg.test(value) === false) {
errors.push(new Error(`军官证号码格式不符`, rule.field));
}
callback(errors);
};
// 校验户口本
const validateAccountCardID = (rule, value, callback) => {
const reg = /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/;
const errors = [];
if (value && reg.test(value) === false) {
errors.push(new Error(`户口本号码格式不符`, rule.field));
}
callback(errors);
};
// 校验回乡证
const validateReturnHomeCardID = (rule, value, callback) => {
const reg = /(H|M)(\d{10})$/;
const errors = [];
if (value && reg.test(value) === false) {
errors.push(new Error(`回乡证号码格式不符`, rule.field));
}
callback(errors);
};
// 校验 uuid
const validateUuid = (rule, value, callback) => {
const reg =
/^[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}$/;
const errors = [];
if (value && reg.test(value) === false) {
errors.push(new Error(`uuid 格式不符`, rule.field));
}
callback(errors);
};