or run

npx @tessl/cli init
Log in

Version

Tile

Overview

Evals

Files

docs

array-object-validation.mdcommon-decorators.mdcore-validation.mdcustom-validation-schema.mdindex.mdnumber-date-validation.mdstring-validation.mdtype-validation.md
tile.json

string-validation.mddocs/

String Validation

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.

Capabilities

Length Validation

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;

Content Validation

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;

Character Type Validation

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;

Format Validation

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;

Phone Number Validation

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;

Encoding and Hash Validation

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;

Standards and Identifiers

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;

Financial Validation

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;

Geographic and Identity Validation

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;

Color Validation

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;

Data Format Validation

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;

Type String Validation

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;

Miscellaneous String Validation

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;

Usage Examples

Basic String Validation

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;
}

Advanced Format Validation

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;
}

Content and Pattern Validation

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;
}

Types

/**
 * 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";