-
Notifications
You must be signed in to change notification settings - Fork 0
/
validate.js
55 lines (47 loc) · 1.21 KB
/
validate.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
const validate = (val, rule) => {
let isValid = true;
switch (rule) {
case 'isName':
isValid = isValid && nameValidator(val);
break;
case 'isNumber':
isValid = isValid && numberValidator(val);
break;
case 'isEmail':
isValid = isValid && emailValidator(val);
break;
case 'minLength':
isValid = isValid && minLengthValidator(val, rules[rule]);
break;
case 'equalTo':
isValid = isValid && equalToValidator(val, connectedValue[rule]);
break;
case 'notEmpty':
isValid = isValid && notEmptyValidator(val);
break;
default:
isValid = true;
}
return isValid;
};
const nameValidator = val => {
return /^(\s)*[A-Za-z]+((\s)?((\'|\-|\.)?([A-Za-z])+))*(\s)*$/.test(val);
};
const numberValidator = val => {
return /^[a-z0-9]+$/.test(val);
};
const emailValidator = val => {
return /[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?/.test(
val
);
};
const minLengthValidator = (val, minLength) => {
return val.length >= minLength;
};
const equalToValidator = (val, checkValue) => {
return val === checkValue;
};
const notEmptyValidator = val => {
return val.trim() !== '';
};
export default validate;