Core functions for creating validation chains that target specific request locations. Each builder creates a validation chain that can be extended with validators and sanitizers.
Creates validation chains for fields in req.body.
/**
* Creates validation chain for req.body fields
* @param fields - Field name(s) to validate (supports nested paths and wildcards)
* @param message - Default error message for failed validations
* @returns ValidationChain for chaining validators and sanitizers
*/
function body(fields?: string | string[], message?: string): ValidationChain;Usage Examples:
import { body } from "express-validator";
// Single field
body('email').isEmail();
// Multiple fields
body(['name', 'email']).trim().notEmpty();
// Nested fields
body('user.profile.age').isInt({ min: 0 });
// Array elements
body('items.*.quantity').isInt({ min: 1 });
// With custom error message
body('password', 'Password must be at least 6 characters').isLength({ min: 6 });Creates validation chains for fields in req.query.
/**
* Creates validation chain for req.query fields
* @param fields - Field name(s) to validate
* @param message - Default error message for failed validations
* @returns ValidationChain for chaining validators and sanitizers
*/
function query(fields?: string | string[], message?: string): ValidationChain;Usage Examples:
import { query } from "express-validator";
// Query parameters
query('page').isInt({ min: 1 }).toInt();
query('limit').isInt({ min: 1, max: 100 }).toInt();
query('search').trim().escape();
query('sort').isIn(['name', 'date', 'price']);Creates validation chains for fields in req.params.
/**
* Creates validation chain for req.params fields
* @param fields - Field name(s) to validate
* @param message - Default error message for failed validations
* @returns ValidationChain for chaining validators and sanitizers
*/
function param(fields?: string | string[], message?: string): ValidationChain;Usage Examples:
import { param } from "express-validator";
// Route parameters
param('id').isUUID();
param('userId').isInt().toInt();
param('slug').isSlug();
param('category').isAlpha();Creates validation chains for fields in req.headers.
/**
* Creates validation chain for req.headers fields
* @param fields - Field name(s) to validate
* @param message - Default error message for failed validations
* @returns ValidationChain for chaining validators and sanitizers
*/
function header(fields?: string | string[], message?: string): ValidationChain;Usage Examples:
import { header } from "express-validator";
// Request headers
header('authorization').notEmpty().matches(/^Bearer .+/);
header('content-type').equals('application/json');
header('x-api-key').isUUID();Creates validation chains for fields in req.cookies.
/**
* Creates validation chain for req.cookies fields
* @param fields - Field name(s) to validate
* @param message - Default error message for failed validations
* @returns ValidationChain for chaining validators and sanitizers
*/
function cookie(fields?: string | string[], message?: string): ValidationChain;Usage Examples:
import { cookie } from "express-validator";
// Cookies
cookie('sessionId').isUUID();
cookie('preferences').isJSON();
cookie('theme').isIn(['light', 'dark']);Creates validation chains that check all request locations (body, cookies, headers, params, query).
/**
* Creates validation chain that checks all request locations
* @param fields - Field name(s) to validate
* @param message - Default error message for failed validations
* @returns ValidationChain for chaining validators and sanitizers
*/
function check(fields?: string | string[], message?: string): ValidationChain;Usage Examples:
import { check } from "express-validator";
// Checks all locations for 'id' field
check('id').isUUID();
// Useful when field could be in multiple locations
check('token').notEmpty();Creates validation chain builders for specific location combinations.
/**
* Creates custom check function for specific locations
* @param locations - Array of locations to check
* @returns Function that creates ValidationChain for specified locations
*/
function buildCheckFunction(locations: Location[]):
(fields?: string | string[], message?: string) => ValidationChain;Usage Examples:
import { buildCheckFunction } from "express-validator";
// Custom builder for body and query only
const checkBodyAndQuery = buildCheckFunction(['body', 'query']);
// Use the custom builder
checkBodyAndQuery('searchTerm').trim().notEmpty();All validation chain builders return a ValidationChain that supports:
interface ValidationChain {
// Conditional validation
if(condition: (value: any, meta: Meta) => boolean): ValidationChain;
optional(options?: { nullable?: boolean; checkFalsy?: boolean }): ValidationChain;
// Error handling
withMessage(message: string): ValidationChain;
bail(): ValidationChain;
// Negation
not: ValidationChain;
// Skip options
skipUndefined(): ValidationChain;
skipNull(): ValidationChain;
skipEmpty(): ValidationChain;
}Express-validator supports flexible field path syntax:
'name', 'email''user.profile.name', 'settings.theme.mode''items.0.name', 'users.1.email''items.*.quantity' (matches any array index)['name', 'email'] (validates both fields with same rules)Examples:
// Nested object validation
body('user.profile.bio').isLength({ max: 500 });
// Array validation
body('products.*.price').isDecimal({ decimal_digits: '2' });
// Multiple field validation
body(['firstName', 'lastName']).trim().notEmpty();