Skip to content

Express-Validator is a custom validation library for Express.js that simplifies input validation by providing a set of easy-to-use, configurable rules. It helps developers ensure that incoming request data is accurate, consistent, and secure, reducing boilerplate code and improving application reliability.

License

Notifications You must be signed in to change notification settings

ArWeb-Packages/Express-Validator

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🚀 Express-validator

A lightweight custom validator for Express.js that supports:

  • ✅ Simple rules
  • ✅ Stops at the first error per field
  • ✅ Works with MongoDB or MySQL
  • ✅ Async database checks

📦 Installation

npm install @arweb/express-validate-rules

Validation Rules Reference

Below is the list of all supported validation rules with their usage format and behavior.

Rule Database Gives error when... Use
required ❌ No Value is null or empty { validator: "required", message: "Your message" }
required_if ❌ No Field is empty when another field has a specific value { validator: "required_if", message: "Your message", options: { other: "field_name", val: "any / or not needed" } }
email ❌ No Value is not a valid email { validator: "email", message: "Your message" }
url ❌ No Value is not a valid URL { validator: "url", message: "Your message" }
alpha ❌ No Value contains non-alphabetic characters { validator: "alpha", message: "Your message" }
alphanumeric ❌ No Value contains characters other than letters or numbers { validator: "alphanumeric", message: "Your message" }
no_spaces ❌ No Value contains spaces { validator: "no_spaces", message: "Your message" }
no_special_chars ❌ No Value contains special characters { validator: "no_special_chars", message: "Your message" }
equal ❌ No Value does not equal provided string { validator: "equal", message: "Your message", options: { allow: "Some Text" } }
not_equal ❌ No Value equals the disallowed string { validator: "not_equal", message: "Your message", options: { disallow: "Some Text" } }
uuid ❌ No Value is not a valid UUID (v1–v8 or any) { validator: "uuid", message: "Your message", options: { type: "any" } }
slug ❌ No Value is not a valid slug { validator: "slug", message: "Your message" }
regex ❌ No Value does not match the pattern { validator: "regex", message: "Your message", options: { pattern: "Pattern", flags: "Flags" } }
contain ❌ No Value does not contain given element { validator: "contain", message: "Your message", options: { element: "Some text or array" } }
not_contain ❌ No Value contains disallowed element { validator: "not_contain", message: "Your message", options: { element: "Some text or array" } }
string_case ❌ No Value is not in the required case (lower/upper/title) { validator: "string_case", message: "Your message", options: { case_type: "lower" } }
string_length ❌ No String length does not meet criteria (min/max/exact) { validator: "string_length", message: "Your message", options: { length: 3, length_type: "min" } }
starts_with ❌ No Value does not start with given prefix { validator: "starts_with", message: "Your message", options: { prefix: "Some Text" } }
ends_with ❌ No Value does not end with given suffix { validator: "ends_with", message: "Your message", options: { suffix: "Some Text" } }
ascii ❌ No Value is not valid ASCII { validator: "ascii", message: "Your message" }
json ❌ No Value is not valid JSON { validator: "json", message: "Your message" }
array ❌ No Value is not a valid array { validator: "array", message: "Your message" }
gt ❌ No Value is ≤ provided val { validator: "gt", message: "Your message", options: { val: 3 } }
gte ❌ No Value is < provided val { validator: "gte", message: "Your message", options: { val: 3 } }
lt ❌ No Value is ≥ provided val { validator: "lt", message: "Your message", options: { val: 3 } }
lte ❌ No Value is > provided val { validator: "lte", message: "Your message", options: { val: 3 } }
number_between ❌ No Value is not between min and max { validator: "number_between", message: "Your message", options: { min: 5, max: 9 } }
integer ❌ No Value is not an integer { validator: "integer", message: "Your message" }
positive ❌ No Value is not positive { validator: "positive", message: "Your message" }
negative ❌ No Value is not negative { validator: "negative", message: "Your message" }
float ❌ No Value is not float/double { validator: "float", message: "Your message" }
numeric ❌ No Value is not numeric { validator: "numeric", message: "Your message" }
even ❌ No Value is not even { validator: "even", message: "Your message" }
odd ❌ No Value is not odd { validator: "odd", message: "Your message" }
boolean ❌ No Value is not a valid boolean { validator: "boolean", message: "Your message" }
is_true ❌ No Value is not true { validator: "is_true", message: "Your message" }
is_false ❌ No Value is not false { validator: "is_false", message: "Your message" }
file_required ❌ No File is missing or empty { validator: "file_required", message: "Your message" }
file_mime ❌ No File MIME type does not match { validator: "file_mime", message: "Your message", options: { types: ["image/jpeg", "image/png"] } }
file_storage_size ❌ No File size does not match rule (min/max/exact) { validator: "file_storage_size", message: "Your message", options: { size_bytes: 100000, size_type: "max/min/exact" } }
file_extension ❌ No File extension does not match allowed list { validator: "file_extension", message: "Your message", options: { extension: [".jpg", ".png"] } }
image_dimensions ❌ No Image dimensions are invalid { validator: "image_dimensions", message: "Your message", options: { width: 200, height: 100, width_type: "max/min/exact", height_type: "max/min/exact" } }
exists ✅ Yes Value does not exist in the specified database collection { validator: "exists", message: "Your message", options: { collection: "users", field: "email", exclude: [{ field: "id", value: req.params.id, logic: "AND" }] } }
Ensures the value already exists (useful for foreign key or reference checks).
unique ✅ Yes Value already exists (not unique) in the specified database collection { validator: "unique", message: "Your message", options: { collection: "users", conditions: [{ field: "username", value: req.body.username, logic: "AND" }, { field: "email", value: req.body.email, logic: "OR" }], exclude: [{ field: "id", value: req.params.id, logic: "AND" }] } }
Ensures values are unique across one or more fields. Supports logical operators (AND / OR) and multiple exclusions.
not_exists ✅ Yes Value already exists in the specified database collection { validator: "not_exists", message: "Your message", options: { collection: "users", field: "email", exclude: [{ field: "id", value: req.params.id, logic: "AND" }] } }
Ensures the value does not exist before inserting or updating. Commonly used for uniqueness checks during creation.

🧠 Summary

Rule Validation Logic
exists Must already exist in DB
unique Must be unique (not duplicated) in DB
not_exists Must not exist in DB at all

Notes:

  • exclude supports an array of conditions with individual logic values.
  • Default logic between conditions is AND if not specified.
  • These database validations can be combined with non-database ones in the same validation set.

Issues

Facing bugs, please raise a Issue

About

Express-Validator is a custom validation library for Express.js that simplifies input validation by providing a set of easy-to-use, configurable rules. It helps developers ensure that incoming request data is accurate, consistent, and secure, reducing boilerplate code and improving application reliability.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published