the_validator
v1.8.2
Published
universal validation through a json interface
Downloads
27
Maintainers
Readme
The Validator!
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.
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" }
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 });
customMessageMaps
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 });