validify.js
validify.js
validify.js is a JavaScript library for data validation.
Features:
- Supports Node.js, require.js or standalone use in the browser
- Validators can be invoked using the dynamic methods generated by the framework
- Validation can be performed by specifying the object/value to validate and a constraints JSON object
NOTE: this library is not yet stable and is likely to change and be refactored rapidly
Install
Node.js
npm install validify.js
Bower
bower install
Usage
Node.js
var validify = ;validify // returns trueBrowser (standalone)
Browser (require.js)
Constraints
Format
<attribute>: <validator>: <options> ...attribute - name of the object attribute to validate, or "*" for simple value validator - the name of the validator to use options - the options to use for the enclosing validator
Invoking
var validify = ; // validate(<object>, <constraint(s)>, mode) // mode is irrelevant when single constraint passed invalidify; // mode 'any' - firstName or nickName must be presentvalidify;Modes:
all (and) - every one of the listed constraints must be true any (or) - at least one of the listed constraints must be true one (xor) - only one of the listed constraints can be true
Example 1
Simple validation of a single field.
Object:
id (integer)
firstName (string)
lastName (string)
Logic:
firstName length > 3
Rule:
firstName: greaterThan: min: 3 Example 2
Multiple fields can be validated for a single object.
Object:
id (integer)
firstName (string)
lastName (string)
Logic:
id must be present firstName present && length > 3
Rule:
id: present: false firstName: present: true length: min: 0 max: 10 inclusive: false Example 3
Simple logic can be performed through use of validation operators.
Object:
id (integer)
integer (integer)
float (float)
isFloat (boolean)
Logic:
if isFloat == true then float must be present && integer must be missing else float must be missing && integer must be present fi
Rule:
isFloat: eq: true integer: present: false float: present: true isFloat: eq: true integer: present: false float: present: true Example 4
Unwrap arrays to apply validation to each object in turn
Object:
id (integer)
name (string)
list ([{
name:
field1: true
}, {
field1: false
}])
Logic:
list.field1 == true
Rule:
isFloat: eq: true integer: present: false float: present: true isFloat: eq: true integer: present: false float: present: true Acknowledgements
This library was partially inspired by several other frameworks and validation libraries, which are fantastic in their own right, but did not quite meet my needs.
validatejs mongoosejs mongoose-validator validator.js
If you are looking for something more battle tested or widely adopted, then check them out.
License
The MIT License (MIT), Copyright (c) 2014 David Castro arimus@gmail.com
See LICENSE file for details