Capable of leaping across language barriers, validating data in a flash, and rescuing small kittens.
npm install the_validator --save
By using a JSON interface, Validator can be implemented in any programming language. Validator prevents duplication of validation logic on the client and server.
{
"fieldName": [
"test1", "test2", "..."
],
"anotherField": ["..."]
}
tests are of the form
{ "testType:testValue": "message if test fails" }
Required will fail if the tested value is null, undefined, or the empty string.
{
"username": [
{ "required": "you must supply a username" }
]
}
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" }
]
}
string must be of the specified minum length
{
"password": [
{ "required": "password required" },
{ "minimumLength:6", "password must be at least six characters long" }
]
}
analogous logic to minimumLength
must match the supplied regex
{"regex:/^[a-zA-Z0-9*$/": "alphanumeric characters only" }
can test for types number, string, boolean, and object.
{ "type:boolean": "must be true or false" }
perform the <, >, <=, >=, and == operators.
{ ">=:100": "you must be 100cm tall to ride the Ferris wheel" }
test if matches a proper email format
{ "email": "bad email format" }
test if matches a proper uuid format
{ "uuid": "bad uuid format" }
tests both values of a passed array of two values match
{
"password": [
{ "match": "passwords must match" }
]
}
tests that value is a member of a set of values
{
"letter": [
{ "enumerated:a,b,c": "value is not 'a', 'b' or 'c'" }
]
}
Numeric strings. accepts values such as "123", "1.2", ".5", "05", "1."
{ "numeric": "numeric string" }
Integer strings. Only characters 0-9
Strings of only letters (upper or lower case)
Strings of only letters and digits
Allow null values to pass through, regardless of other validation rules applied to the field.
var validator = new Validator(schema);
var errors = validator.test({
username: 'bob',
password: 'cornflakes'
});
Only allow fields explicitly listed in the schema
var validator = new Validator(schema);
var errors = validator.test({
username: 'bob',
password: 'cornflakes'
}, { strict: true });
Create your own error messages
var errors = new Validator(
{ foo: ['<:5'] },
{
customMessageMaps: {
'<': function (name, testValue) {
return 'The field ' + name + ' should be less than ' + testValue;
}
}
}
).test({ foo: 6 });