Я использую Yup для проверки формы регистрации, но я изо всех сил пытаюсь проверить поля кредитной карты из-за необходимости методов из схем string
и number
Yup.
Номер карты, например, не должен превышать 16 символов.Этого легко достичь, используя метод max
из схемы string
.Однако, если пользователь набрал 16 букв, а не цифры, в настоящее время он пройдет проверку.Если я изменю схему с string
на number
, то max
не будет вести себя одинаково и вместо этого сложит все числа в поле и проверит, равно ли оно меньше максимального числа.
Примером поля, в котором мне нужно было бы использовать методы min
и max
схемы number
, является месяц истечения, где минимум будет равен 1, а максимум равен 12. ОднакоМне все еще нужно проверить, чтобы убедиться, что количество символов в этом поле равно 2, так как ведущий 0 должен использоваться для месяцев с января по сентябрь.
const validationSchema = {
cardNumber: Yup.string()
.label('Card number')
.max(16)
.required(),
cvc: Yup.string()
.label('CVC')
.min(3)
.max(4)
.required(),
nameOnCard: Yup.string()
.label('Name on card')
.required(),
expiryMonth: Yup.string()
.label('Expiry month')
.min(2)
.max(2)
.required(),
expiryYear: Yup.string()
.label('Expiry year')
.min(4)
.max(4)
.required(),
};