Functional Validators.
First: Build validation expressions.
Second: Validate your data by this expression.
- V.email
- V.url
- V.range
- V.text
- V.capitalLetter
- V.number
- V.word
- V.required
- V.phone
- V.date
- V.and
- V.or
- V.message
- Simple Validator
var emailValidator = V.email();
emailValidator('email@domain.com');
//output: true
emailValidator('emaildomaincom');
//output: 'invalid email'
- Simple Validator with the custom message
var emailValidator = V.message(V.email(), 'something wrong');
emailValidator('email@domain.com');
//output: true
emailValidator('email@domaincom');
//output: 'something wrong'
- AND Group validators
var emailValidator = V.email(),
rangeValidator = V.range(1, 17),
groupANDValidator = V.and(emailValidator, rangeValidator);
groupANDValidator('email@domain.com');
//output: true
groupANDValidator('email@domainand.com');
//output: ["string length should be between 1 and 17 chars"]
groupANDValidator('emaildomainand.com');
//output: ["invalid email", "string length should be between 1 and 17 chars"]
- OR Group validators
var emailValidator = V.email(),
rangeValidator = V.range(1, 10),
groupORValidator = V.or(emailValidator, rangeValidator);
groupORValidator('email@domain.com');
//output: true
groupORValidator('0123456789');
//output: true
groupORValidator('emaildomainand.com');
//output: ["invalid email", "string length should be between 1 and 10 chars"]
- Complex group validator
var emailValidator = V.email(),
rangeValidator = V.range(5, 10),
textValidator = V.text(),
groupANDValidator = V.and(textValidator, rangeValidator),
groupORValidator = V.or(groupANDValidator, emailValidator);
groupORValidator('email@domain.com');
//output: true
groupORValidator('0123456789');
//output: true
groupORValidator('text');
//output: true
groupORValidator('123');
//output: ["should be a text only", "string length should be between 5 and 10 chars", "invalid email"]
- Group validators with custom messages
var emailValidator = V.email(),
rangeValidator = V.range(1, 10),
groupORValidator = V.message(V.or(emailValidator, rangeValidator), 'something is wrong here!');
groupORValidator('email@domain.com');
//output: true
groupORValidator('0123456789');
//output: true
groupORValidator('emaildomainand.com');
//output: "something is wrong here!"
- Group validators with custom messages for special validator
var emailValidator = V.email(),
rangeValidator = V.range(1, 10),
groupORValidator = V.or(emailValidator, V.message(rangeValidator, 'something is wrong here!'));
groupORValidator('email@domain.com');
//output: true
groupORValidator('0123456789');
//output: true
groupORValidator('emaildomainand.com');
//output: ["invalid email", "something is wrong here!"]
/**
* @params validatorName {string}
* @params validationExpression {function}
* @params force {boolean} - force rewrite, in case if validator with current name already exists
*/
V.register = function(validatorName, validationExpression, force){
...
}
V.register('yourValidatorName', function(val, args..., message){
return !!validationExpression || massage || 'default error message';
}, false);
var validator = V.yourValidatorName(args...);
validator(string);