/functional-validators

Build your validation expression

Primary LanguageJavaScript

About

Functional Validators.

First: Build validation expressions.

Second: Validate your data by this expression.

Validators List

  • V.email
  • V.url
  • V.range
  • V.text
  • V.capitalLetter

Functions

  • V.and
  • V.or
  • V.message

Usage

  1. Simple Validator
	var emailValidator = V.email();
    
	emailValidator('email@domain.com'); 
    //output: true
   	emailValidator('emaildomaincom'); 
    //output: 'invalid email'
    
  1. 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'
    
  1. 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"]
    
  1. 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"]
    
  1. 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"]
    
  1. 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!"
  1. 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!"]

How to add Validators

    /**
     * @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){
        ...
    }

Example

    V.register('yourValidatorName', function(val, args..., message){
        return !!validationExpression || massage || 'default error message';
    }, false);
     
    
    var validator = V.yourValidatorName(args...);
    
    validator(string);