String validation decorators provide comprehensive validation for text data including format validation, length constraints, character type checking, encoding validation, and standards compliance. This category includes 70+ specialized validators covering everything from email addresses to financial identifiers.
Control string length with minimum, maximum, and range constraints.
/**
* Check that string length is within specified range
* @param min - Minimum length (inclusive)
* @param max - Maximum length (inclusive), optional
* @param validationOptions - Validation configuration options
*/
@Length(min: number, max?: number, validationOptions?: ValidationOptions): PropertyDecorator;
/**
* Check that string length is at least minimum value
* @param min - Minimum length (inclusive)
* @param validationOptions - Validation configuration options
*/
@MinLength(min: number, validationOptions?: ValidationOptions): PropertyDecorator;
/**
* Check that string length is at most maximum value
* @param max - Maximum length (inclusive)
* @param validationOptions - Validation configuration options
*/
@MaxLength(max: number, validationOptions?: ValidationOptions): PropertyDecorator;
/**
* Check that string byte length is within specified range
* @param min - Minimum byte length (inclusive)
* @param max - Maximum byte length (inclusive), optional
* @param validationOptions - Validation configuration options
*/
@IsByteLength(min: number, max?: number, validationOptions?: ValidationOptions): PropertyDecorator;Validate string content against patterns and substrings.
/**
* Check that string contains specified substring
* @param seed - Substring that must be present
* @param validationOptions - Validation configuration options
*/
@Contains(seed: string, validationOptions?: ValidationOptions): PropertyDecorator;
/**
* Check that string does not contain specified substring
* @param seed - Substring that must not be present
* @param validationOptions - Validation configuration options
*/
@NotContains(seed: string, validationOptions?: ValidationOptions): PropertyDecorator;
/**
* Check that string matches specified regular expression
* @param pattern - Regular expression pattern or RegExp object
* @param modifiers - RegExp modifiers (if pattern is string)
* @param validationOptions - Validation configuration options
*/
@Matches(pattern: RegExp | string, modifiers?: string, validationOptions?: ValidationOptions): PropertyDecorator;Validate strings based on character composition and encoding.
/**
* Check that string contains only alphabetic characters
* @param locale - Locale for alphabetic validation
* @param validationOptions - Validation configuration options
*/
@IsAlpha(locale?: ValidatorJS.AlphaLocale, validationOptions?: ValidationOptions): PropertyDecorator;
/**
* Check that string contains only alphanumeric characters
* @param locale - Locale for alphanumeric validation
* @param validationOptions - Validation configuration options
*/
@IsAlphanumeric(locale?: ValidatorJS.AlphanumericLocale, validationOptions?: ValidationOptions): PropertyDecorator;
/**
* Check that string contains only ASCII characters
* @param validationOptions - Validation configuration options
*/
@IsAscii(validationOptions?: ValidationOptions): PropertyDecorator;
/**
* Check that string is all uppercase
* @param validationOptions - Validation configuration options
*/
@IsUppercase(validationOptions?: ValidationOptions): PropertyDecorator;
/**
* Check that string is all lowercase
* @param validationOptions - Validation configuration options
*/
@IsLowercase(validationOptions?: ValidationOptions): PropertyDecorator;
/**
* Check that string contains multibyte characters
* @param validationOptions - Validation configuration options
*/
@IsMultibyte(validationOptions?: ValidationOptions): PropertyDecorator;
/**
* Check that string contains surrogate pairs
* @param validationOptions - Validation configuration options
*/
@IsSurrogatePair(validationOptions?: ValidationOptions): PropertyDecorator;
/**
* Check that string contains full-width characters
* @param validationOptions - Validation configuration options
*/
@IsFullWidth(validationOptions?: ValidationOptions): PropertyDecorator;
/**
* Check that string contains half-width characters
* @param validationOptions - Validation configuration options
*/
@IsHalfWidth(validationOptions?: ValidationOptions): PropertyDecorator;
/**
* Check that string contains mixed width characters
* @param validationOptions - Validation configuration options
*/
@IsVariableWidth(validationOptions?: ValidationOptions): PropertyDecorator;Validate common data formats like emails, URLs, and network addresses.
/**
* Check that string is a valid email address
* @param options - Email validation options
* @param validationOptions - Validation configuration options
*/
@IsEmail(options?: IsEmailOptions, validationOptions?: ValidationOptions): PropertyDecorator;
/**
* Check that string is a valid URL
* @param options - URL validation options
* @param validationOptions - Validation configuration options
*/
@IsUrl(options?: IsURLOptions, validationOptions?: ValidationOptions): PropertyDecorator;
/**
* Check that string is a fully qualified domain name
* @param options - FQDN validation options
* @param validationOptions - Validation configuration options
*/
@IsFQDN(options?: IsFQDNOptions, validationOptions?: ValidationOptions): PropertyDecorator;
/**
* Check that string is a valid IP address
* @param version - IP version (4, 6, or undefined for both)
* @param validationOptions - Validation configuration options
*/
@IsIP(version?: 4 | 6, validationOptions?: ValidationOptions): PropertyDecorator;
/**
* Check that string is a valid port number
* @param validationOptions - Validation configuration options
*/
@IsPort(validationOptions?: ValidationOptions): PropertyDecorator;
/**
* Check that string is a valid MAC address
* @param options - MAC address validation options
* @param validationOptions - Validation configuration options
*/
@IsMacAddress(options?: IsMACAddressOptions, validationOptions?: ValidationOptions): PropertyDecorator;Validate phone numbers with regional support.
/**
* Check that string is a valid phone number
* @param region - Two-letter country code for regional validation
* @param validationOptions - Validation configuration options
*/
@IsPhoneNumber(region?: string, validationOptions?: ValidationOptions): PropertyDecorator;
/**
* Check that string is a valid mobile phone number
* @param locale - Locale for mobile phone validation
* @param options - Mobile phone validation options
* @param validationOptions - Validation configuration options
*/
@IsMobilePhone(locale?: MobilePhoneLocale | MobilePhoneLocale[], options?: IsMobilePhoneOptions, validationOptions?: ValidationOptions): PropertyDecorator;Validate encoded strings and cryptographic hashes.
/**
* Check that string is Base32 encoded
* @param validationOptions - Validation configuration options
*/
@IsBase32(validationOptions?: ValidationOptions): PropertyDecorator;
/**
* Check that string is Base58 encoded
* @param validationOptions - Validation configuration options
*/
@IsBase58(validationOptions?: ValidationOptions): PropertyDecorator;
/**
* Check that string is Base64 encoded
* @param validationOptions - Validation configuration options
*/
@IsBase64(options?: IsBase64Options, validationOptions?: ValidationOptions): PropertyDecorator;
/**
* Check that string is a valid hash
* @param algorithm - Hash algorithm (md5, sha1, sha256, etc.)
* @param validationOptions - Validation configuration options
*/
@IsHash(algorithm: HashAlgorithm, validationOptions?: ValidationOptions): PropertyDecorator;
/**
* Check that string is hexadecimal
* @param validationOptions - Validation configuration options
*/
@IsHexadecimal(validationOptions?: ValidationOptions): PropertyDecorator;
/**
* Check that string is octal
* @param validationOptions - Validation configuration options
*/
@IsOctal(validationOptions?: ValidationOptions): PropertyDecorator;Validate strings against international standards and identifier formats.
/**
* Check that string is a valid UUID
* @param version - UUID version (1, 2, 3, 4, 5, or 'all')
* @param validationOptions - Validation configuration options
*/
@IsUUID(version?: UUIDVersion, validationOptions?: ValidationOptions): PropertyDecorator;
/**
* Check that string is a valid ISBN
* @param version - ISBN version (10, 13, or undefined for both)
* @param validationOptions - Validation configuration options
*/
@IsISBN(version?: 10 | 13, validationOptions?: ValidationOptions): PropertyDecorator;
/**
* Check that string is a valid ISIN (International Securities Identification Number)
* @param validationOptions - Validation configuration options
*/
@IsISIN(validationOptions?: ValidationOptions): PropertyDecorator;
/**
* Check that string is a valid ISO8601 date
* @param options - ISO8601 validation options
* @param validationOptions - Validation configuration options
*/
@IsISO8601(options?: IsISO8601Options, validationOptions?: ValidationOptions): PropertyDecorator;
/**
* Check that string is ISO 3166-1 alpha-2 country code
* @param validationOptions - Validation configuration options
*/
@IsISO31661Alpha2(validationOptions?: ValidationOptions): PropertyDecorator;
/**
* Check that string is ISO 3166-1 alpha-3 country code
* @param validationOptions - Validation configuration options
*/
@IsISO31661Alpha3(validationOptions?: ValidationOptions): PropertyDecorator;
/**
* Check that string is RFC3339 date
* @param validationOptions - Validation configuration options
*/
@IsRFC3339(validationOptions?: ValidationOptions): PropertyDecorator;
/**
* Check that string is a valid ISSN
* @param options - ISSN validation options
* @param validationOptions - Validation configuration options
*/
@IsISSN(options?: IsISSNOptions, validationOptions?: ValidationOptions): PropertyDecorator;
/**
* Check that string is a valid ISRC (International Standard Recording Code)
* @param validationOptions - Validation configuration options
*/
@IsISRC(validationOptions?: ValidationOptions): PropertyDecorator;
/**
* Check that string is ISO 4217 currency code
* @param validationOptions - Validation configuration options
*/
@IsISO4217CurrencyCode(validationOptions?: ValidationOptions): PropertyDecorator;Validate financial and payment-related formats.
/**
* Check that string is a valid currency amount
* @param options - Currency validation options
* @param validationOptions - Validation configuration options
*/
@IsCurrency(options?: IsCurrencyOptions, validationOptions?: ValidationOptions): PropertyDecorator;
/**
* Check that string is a valid credit card number
* @param validationOptions - Validation configuration options
*/
@IsCreditCard(validationOptions?: ValidationOptions): PropertyDecorator;
/**
* Check that string is a valid BIC (Bank Identifier Code)
* @param validationOptions - Validation configuration options
*/
@IsBIC(validationOptions?: ValidationOptions): PropertyDecorator;
/**
* Check that string is a valid IBAN (International Bank Account Number)
* @param validationOptions - Validation configuration options
*/
@IsIBAN(validationOptions?: ValidationOptions): PropertyDecorator;
/**
* Check that string is a valid Bitcoin address
* @param validationOptions - Validation configuration options
*/
@IsBtcAddress(validationOptions?: ValidationOptions): PropertyDecorator;
/**
* Check that string is a valid Ethereum address
* @param validationOptions - Validation configuration options
*/
@IsEthereumAddress(validationOptions?: ValidationOptions): PropertyDecorator;Validate geographic codes and identity documents.
/**
* Check that string is a valid postal code
* @param locale - Locale for postal code validation
* @param validationOptions - Validation configuration options
*/
@IsPostalCode(locale?: 'any' | PostalCodeLocale, validationOptions?: ValidationOptions): PropertyDecorator;
/**
* Check that string is a valid passport number
* @param countryCode - Two-letter country code
* @param validationOptions - Validation configuration options
*/
@IsPassportNumber(countryCode: string, validationOptions?: ValidationOptions): PropertyDecorator;
/**
* Check that string is a valid identity card number
* @param locale - Locale for identity card validation
* @param validationOptions - Validation configuration options
*/
@IsIdentityCard(locale: IdentityCardLocale, validationOptions?: ValidationOptions): PropertyDecorator;
/**
* Check that string is a valid timezone identifier
* @param validationOptions - Validation configuration options
*/
@IsTimeZone(validationOptions?: ValidationOptions): PropertyDecorator;
/**
* Check that string is a valid locale identifier
* @param validationOptions - Validation configuration options
*/
@IsLocale(validationOptions?: ValidationOptions): PropertyDecorator;
/**
* Check that string is a valid tax identification number
* @param locale - Locale for tax ID validation
* @param validationOptions - Validation configuration options
*/
@IsTaxId(locale: TaxIdLocale, validationOptions?: ValidationOptions): PropertyDecorator;Validate color representations.
/**
* Check that string is a valid hex color
* @param validationOptions - Validation configuration options
*/
@IsHexColor(validationOptions?: ValidationOptions): PropertyDecorator;
/**
* Check that string is a valid RGB color
* @param includePercentValues - Whether to include percentage values
* @param validationOptions - Validation configuration options
*/
@IsRgbColor(includePercentValues?: boolean, validationOptions?: ValidationOptions): PropertyDecorator;
/**
* Check that string is a valid HSL color
* @param validationOptions - Validation configuration options
*/
@IsHSL(validationOptions?: ValidationOptions): PropertyDecorator;Validate structured data formats and tokens.
/**
* Check that string is valid JSON
* @param validationOptions - Validation configuration options
*/
@IsJSON(validationOptions?: ValidationOptions): PropertyDecorator;
/**
* Check that string is a valid JWT token
* @param validationOptions - Validation configuration options
*/
@IsJWT(validationOptions?: ValidationOptions): PropertyDecorator;
/**
* Check that string is a valid data URI
* @param validationOptions - Validation configuration options
*/
@IsDataURI(validationOptions?: ValidationOptions): PropertyDecorator;
/**
* Check that string is a valid MIME type
* @param validationOptions - Validation configuration options
*/
@IsMimeType(validationOptions?: ValidationOptions): PropertyDecorator;
/**
* Check that string is a valid magnet URI
* @param validationOptions - Validation configuration options
*/
@IsMagnetURI(validationOptions?: ValidationOptions): PropertyDecorator;
/**
* Check that string is a valid Firebase Push ID
* @param validationOptions - Validation configuration options
*/
@IsFirebasePushId(validationOptions?: ValidationOptions): PropertyDecorator;Validate strings that represent other data types.
/**
* Check that string represents a boolean value
* @param validationOptions - Validation configuration options
*/
@IsBooleanString(validationOptions?: ValidationOptions): PropertyDecorator;
/**
* Check that string represents a number
* @param options - Number string validation options
* @param validationOptions - Validation configuration options
*/
@IsNumberString(options?: IsNumericOptions, validationOptions?: ValidationOptions): PropertyDecorator;
/**
* Check that string represents a date
* @param validationOptions - Validation configuration options
*/
@IsDateString(options?: IsISO8601Options, validationOptions?: ValidationOptions): PropertyDecorator;
/**
* Check that string represents a decimal number
* @param options - Decimal validation options
* @param validationOptions - Validation configuration options
*/
@IsDecimal(options?: IsDecimalOptions, validationOptions?: ValidationOptions): PropertyDecorator;Additional specialized string validators.
/**
* Check that string is a valid MongoDB ObjectId
* @param validationOptions - Validation configuration options
*/
@IsMongoId(validationOptions?: ValidationOptions): PropertyDecorator;
/**
* Check that string is in military time format (HH:MM)
* @param validationOptions - Validation configuration options
*/
@IsMilitaryTime(validationOptions?: ValidationOptions): PropertyDecorator;
/**
* Check that string is a valid semantic version
* @param validationOptions - Validation configuration options
*/
@IsSemVer(validationOptions?: ValidationOptions): PropertyDecorator;
/**
* Check that string meets strong password requirements
* @param options - Strong password validation options
* @param validationOptions - Validation configuration options
*/
@IsStrongPassword(options?: IsStrongPasswordOptions, validationOptions?: ValidationOptions): PropertyDecorator;
/**
* Check that string is a valid EAN (European Article Number)
* @param validationOptions - Validation configuration options
*/
@IsEAN(validationOptions?: ValidationOptions): PropertyDecorator;import { Length, IsEmail, IsUrl, Contains, IsAlpha } from "class-validator";
class UserProfile {
@Length(2, 50)
@IsAlpha()
firstName: string;
@Length(2, 50)
@IsAlpha()
lastName: string;
@IsEmail()
email: string;
@IsUrl()
website: string;
@Contains("@")
contactInfo: string;
}import { IsUUID, IsISO8601, IsPhoneNumber, IsCreditCard, IsPostalCode } from "class-validator";
class CustomerData {
@IsUUID(4)
customerId: string;
@IsISO8601()
registrationDate: string;
@IsPhoneNumber('US')
phoneNumber: string;
@IsCreditCard()
paymentMethod: string;
@IsPostalCode('US')
zipCode: string;
}import { Matches, NotContains, IsBase64, IsJSON } from "class-validator";
class ContentData {
@Matches(/^[A-Z]{2,4}-\d{4}$/)
productCode: string; // Format: ABC-1234
@NotContains('admin')
@NotContains('root')
username: string;
@IsBase64()
encodedData: string;
@IsJSON()
configurationData: string;
}/**
* Options for email validation
*/
interface IsEmailOptions {
/** Allow display names in email addresses (e.g., "John Doe <john@example.com>") */
allow_display_name?: boolean;
/** Require display names in email addresses */
require_display_name?: boolean;
/** Allow UTF8 characters in the local part (before @) */
allow_utf8_local_part?: boolean;
/** Require a top-level domain */
require_tld?: boolean;
/** Ignore maximum length restrictions */
ignore_max_length?: boolean;
/** Allow IP addresses as domain */
allow_ip_domain?: boolean;
/** Enable domain-specific validation */
domain_specific_validation?: boolean;
/** Characters to blacklist in email addresses */
blacklisted_chars?: string;
}
/**
* Options for URL validation
*/
interface IsURLOptions {
/** Valid protocols */
protocols?: string[];
/** Require a valid protocol */
require_valid_protocol?: boolean;
/** Require a protocol */
require_protocol?: boolean;
/** Require a host */
require_host?: boolean;
/** Require a port number */
require_port?: boolean;
/** Require a path */
require_path?: boolean;
/** Require a query string */
require_query?: boolean;
/** Require a fragment */
require_fragment?: boolean;
/** Allow query components */
allow_query_components?: boolean;
/** Allow fragments */
allow_fragments?: boolean;
/** Allow protocol relative URLs */
allow_protocol_relative_urls?: boolean;
/** Validate length */
validate_length?: boolean;
}
/**
* Options for Fully Qualified Domain Name validation
*/
interface IsFQDNOptions {
/** Require a top-level domain */
require_tld?: boolean;
/** Allow underscores in domain names */
allow_underscores?: boolean;
/** Allow trailing dot in domain names */
allow_trailing_dot?: boolean;
}
/**
* Options for MAC address validation
*/
interface IsMACAddressOptions {
/** Don't allow colons as separators */
no_colons?: boolean;
/** Don't allow any separators */
no_separators?: boolean;
/** EUI (Extended Unique Identifier) standard */
eui?: "48" | "64";
}
/**
* Options for Base64 validation
*/
interface IsBase64Options {
/** Allow URL-safe Base64 (uses - and _ instead of + and /) */
urlSafe?: boolean;
/** Require proper padding (=) */
padding?: boolean;
}
/**
* Options for ISO 8601 date validation
*/
interface IsISO8601Options {
/** Strict validation (additional checks for valid dates) */
strict?: boolean;
/** Strict separator validation */
strictSeparator?: boolean;
}
/**
* Options for mobile phone number validation
*/
interface IsMobilePhoneOptions {
/** If true, the mobile phone number must be supplied with country code and start with + */
strictMode?: boolean;
}
/**
* Supported mobile phone locales
*/
type MobilePhoneLocale = "am-AM" | "ar-AE" | "ar-BH" | "ar-DZ" | "ar-LB" | "ar-EG" | "ar-IQ" | "ar-JO"
| "ar-KW" | "ar-LY" | "ar-MA" | "ar-OM" | "ar-SA" | "ar-SY" | "ar-TN" | "az-AZ" | "bs-BA" | "be-BY"
| "bg-BG" | "bn-BD" | "ca-AD" | "cs-CZ" | "da-DK" | "de-DE" | "de-AT" | "de-CH" | "de-LU" | "el-GR"
| "en-AU" | "en-GB" | "en-GG" | "en-GH" | "en-HK" | "en-MO" | "en-IE" | "en-IN" | "en-KE" | "en-MT"
| "en-MU" | "en-NG" | "en-NZ" | "en-PK" | "en-PH" | "en-RW" | "en-SG" | "en-SL" | "en-TZ" | "en-UG"
| "en-US" | "en-ZA" | "en-ZM" | "en-ZW" | "es-AR" | "es-BO" | "es-CO" | "es-CL" | "es-CR" | "es-DO"
| "es-HN" | "es-EC" | "es-ES" | "es-GT" | "es-PE" | "es-MX" | "es-PA" | "es-PY" | "es-UY" | "es-VE"
| "et-EE" | "fa-IR" | "fi-FI" | "fj-FJ" | "fo-FO" | "fr-FR" | "fr-GF" | "fr-GP" | "fr-MQ" | "fr-RE"
| "he-IL" | "hu-HU" | "id-ID" | "it-IT" | "it-SM" | "ja-JP" | "ka-GE" | "kk-KZ" | "kl-GL" | "ko-KR"
| "lt-LT" | "lv-LV" | "ms-MY" | "nb-NO" | "ne-NP" | "nl-BE" | "nl-NL" | "nn-NO" | "pl-PL" | "pt-BR"
| "pt-PT" | "ro-RO" | "ru-RU" | "si-LK" | "sk-SK" | "sl-SI" | "sr-RS" | "sv-SE" | "th-TH" | "tr-TR"
| "uk-UA" | "vi-VN" | "zh-CN" | "zh-HK" | "zh-MO" | "zh-TW";
/**
* Options for decimal number validation
*/
interface IsDecimalOptions {
/** Force decimal point presence */
force_decimal?: boolean;
/** Decimal digits specification (e.g., '1,3' for 1-3 digits, '3' for exactly 3, '1,' for minimum 1) */
decimal_digits?: string;
/** Locale for decimal validation */
locale?: string;
}
/**
* Options for password strength validation
*/
interface IsStrongPasswordOptions {
/** Minimum length of password */
minLength?: number;
/** Minimum lowercase characters required */
minLowercase?: number;
/** Minimum uppercase characters required */
minUppercase?: number;
/** Minimum number of digits required */
minNumbers?: number;
/** Minimum number of symbols required */
minSymbols?: number;
}
/**
* Supported postal code locales
*/
type PostalCodeLocale = "AD" | "AT" | "AU" | "AZ" | "BE" | "BG" | "BR" | "BY" | "CA" | "CH" | "CN" | "CZ" | "DE" | "DK" | "DO" | "DZ" | "EE" | "ES" | "FI" | "FR" | "GB" | "GR" | "HR" | "HT" | "HU" | "ID" | "IE" | "IL" | "IN" | "IR" | "IS" | "IT" | "JP" | "KE" | "KR" | "LI" | "LT" | "LU" | "LV" | "MG" | "MT" | "MX" | "NL" | "NO" | "NP" | "NZ" | "PL" | "PR" | "PT" | "RO" | "RU" | "SA" | "SE" | "SG" | "SI" | "SK" | "TH" | "TN" | "TW" | "UA" | "US" | "ZA" | "ZM";