Декоратор @IsAlpha относится к группе строковых валидаторов библиотеки class-validator и используется для проверки того, что значение поля содержит исключительно буквенные символы.
Под буквенными символами понимаются символы алфавита конкретной локали (по умолчанию — латинский алфавит). Любые цифры, пробелы, знаки препинания и специальные символы приводят к ошибке валидации.
Основная задача валидатора — подтвердить, что строка состоит только из букв:
a-z, A-Z (и
дополнительные буквы выбранной локали)0-9, !@#$%^&*(),
пробелы, подчёркиванияimport { IsAlpha } from 'class-validator';
class CreateUserDto {
@IsAlpha()
firstName: string;
}
В данном случае поле firstName будет считаться валидным
только при условии, что оно состоит исключительно из букв.
Следующие значения будут отклонены:
"John123" — содержит цифры"John Doe" — содержит пробел"John_Doe" — содержит символ подчёркивания"John!" — содержит знак препинанияОдним из ключевых аспектов @IsAlpha является поддержка
локалей. Валидатор может учитывать расширенные алфавиты различных
языков.
import { IsAlpha } from 'class-validator';
class CreateUserDto {
@IsAlpha('en-US')
lastName: string;
}
Поддерживаемые локали позволяют учитывать символы национальных алфавитов, например:
Однако поведение зависит от реализации используемой версии class-validator и используемых регулярных выражений внутри библиотеки.
Декоратор @IsAlphanumeric используется
для проверки строки на соответствие алфавитно-цифровому набору символов.
В отличие от @IsAlpha, он допускает наличие цифр, но
запрещает любые специальные символы и пробелы.
Разрешённые символы:
a-z, A-Z0-9Запрещённые символы:
+, -,
=, @, # и т.д.)import { IsAlphanumeric } from 'class-validator';
class RegisterDto {
@IsAlphanumeric()
username: string;
}
Такое поле допускает значения вроде:
"user123""TestAccount9""abcXYZ456"и отклоняет:
"user name" (пробел)"user-name" (дефис)"user.name" (точка)Ключевое различие между двумя валидаторами заключается в допустимом наборе символов:
| Декоратор | Разрешённые символы | Запрещённые символы |
|---|---|---|
| @IsAlpha | только буквы | цифры, пробелы, спецсимволы |
| @IsAlphanumeric | буквы и цифры | пробелы, спецсимволы |
@IsAlphanumeric часто используется для полей
идентификаторов, логинов и кодов.
Как и другие строковые валидаторы class-validator,
@IsAlphanumeric может учитывать локали:
import { IsAlphanumeric } from 'class-validator';
class ProductDto {
@IsAlphanumeric('en-US')
sku: string;
}
В зависимости от локали допускаются дополнительные буквенные символы, характерные для конкретного языка.
class LoginDto {
@IsAlphanumeric()
login: string;
password: string;
}
Использование ограничивает логин простым набором символов, исключая пробелы и спецсимволы.
class ProductDto {
@IsAlphanumeric()
articleCode: string;
}
Такой подход часто применяется для SKU или внутренних кодов товаров.
class SystemDto {
@IsAlphanumeric()
externalId: string;
}
Позволяет гарантировать, что идентификатор не содержит символов, способных нарушить обработку в URL или базах данных.
@MinLength,
@MaxLength)На практике @IsAlphanumeric часто используется вместе с
другими проверками:
import { IsAlphanumeric, MinLength, MaxLength } from 'class-validator';
class UserDto {
@IsAlphanumeric()
@MinLength(5)
@MaxLength(20)
username: string;
}
Такой набор ограничивает: