Skip to content
JavaScript library for data validation
JavaScript Shell HTML
Find file
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.
bin
browser
lib/validators
test
.gitignore
.jshintrc
.travis.yml
Gruntfile.js
LICENSE
README.md
bower.json
package.json
validify.js

README.md

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

browser support

Install

Node.js

npm install validify.js

Bower

bower install

Usage

Node.js

var validify = require('validify');
validify.email('test@example.com') // returns true

Browser (standalone)

<script src="validify.standalone.min.js"></script>
<script>
  validify.email('test@example.com') // returns true
</script>

Browser (require.js)

<script src="require.js"></script>
<script>
require(['validify.standalone.min'], function(validify) {
  validify.email('test@example.com') // returns true
})
</script>

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 = require('validify');

// validate(<object>, <constraint(s)>, mode)

// mode is irrelevant when single constraint passed in
validify.validate(testObject, {
  firstName: { present: true }
});

// mode 'any' - firstName or nickName must be present
validify.validate(testObject, [
  { firstName: { present: true } },
  { nickName: { present: true } }
], 'any');

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 && (0 <= length < 10)

Rule:

[
  { 
    id: { 
      present: true 
    } 
  },
  { 
    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: false
    },
    integer: {
      present: true
    },
    float: {
      present: false
    }
  }
]

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:

[
  {
    "list.field1": {
      eq: 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.

If you are looking for something more battle tested or widely adopted, then check them out.

License

The MIT License (MIT), Copyright (c) 2014-2014 David Castro arimus@gmail.com

See LICENSE file for details

Something went wrong with that request. Please try again.