Decorator-based property validation for classes.
—
Quality
Pending
Does it follow best practices?
Impact
Pending
No eval scenarios have been run
Pending
The risk profile of this skill
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";