Skip to content
Universal Data Validation Through a JSON interface.
JavaScript
Find file
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.
test
.gitignore
LICENSE.md
README.md
gruntfile.js
package.json
validator.js

README.md

The Validator!

Capable of leaping across language barriers, validating data in a flash, and rescuing small kittens.

By using a JSON interface, Validator can be implemented in any programming language. Validator prevents duplication of validation logic on the client and server.

Create a schema

{
    "fieldName": [
        "test1", "test2", "..."
    ],
    "anotherField": ["..."]
}

tests are of the form

{ "testType:testValue": "message if test fails" }

testType

required

Required will fail if the tested value is null, undefined, or the empty string.

{
    "username": [
        { "required": "you must supply a username" }
    ]
}

illegalField

ensures that the test data does not contain the given key. illegalField should be the first and only test on a field.

{
    "internalField": [
        { "illegalField": "You are not allowed to edit the internalField" }
    ]
}

minimumLength

string must be of the specified minum length

{
    "password": [
        { "required": "password required" },
        { "minimumLength:6", "password must be at least six characters long" }
    ]
}

maximumLength

analogous logic to minimumLength

regex

must match the supplied regex

{"regex:/^[a-zA-Z0-9*$/": "alphanumeric characters only" }

type

can test for types number, string, boolean, and object.

{ "type:boolean": "must be true or false" }

comparison operators

perform the <, >, <=, >=, and == operators.

{ ">=:100": "you must be 100cm tall to ride the Ferris wheel" }

email

test if matches a proper email format

{ "email": "bad email format" }

uuid

test if matches a proper uuid format

{ "uuid": "bad uuid format" }

match

tests both values of a passed array of two values match

{
    "password": [
        { "match": "passwords must match" }
    ]
}

enumerated

tests that value is a member of a set of values

{
    "letter": [
        { "enumerated:a,b,c": "value is not 'a', 'b' or 'c'" }
    ]
}

numeric

Numeric strings. accepts values such as "123", "1.2", ".5", "05", "1."

{ "numeric": "numeric string" }

integer

Integer strings. Only characters 0-9

alphabetical

Strings of only letters (upper or lower case)

alphanumeric

Strings of only letters and digits

allowNull

Allow null values to pass through, regardless of other validation rules applied to the field.

Run

var validator = new Validator(schema);

var errors = validator.test({
    username: 'bob',
    password: 'cornflakes'
});

Strict Mode

Only allow fields explicitly listed in the schema

var validator = new Validator(schema);

var errors = validator.test({
    username: 'bob',
    password: 'cornflakes'
}, { strict: true });

install via npm npm install the_validator

Something went wrong with that request. Please try again.