我正在使用Yup验证注册表单,但由于需要 Yupstring
和number
模式中的方法,我正在努力验证信用卡字段。
例如卡号不应超过 16 个字符。max
使用模式中的方法很容易实现这一点string
。但是,如果用户输入 16 个字母而不是数字,则当前将通过验证。如果我将模式从更改string
为number
thenmax
不会以相同的方式运行,而是将字段中的所有数字相加并检查它是否等于小于最大数字。
我需要使用模式的min
andmax
方法的字段示例number
是到期月份,其中最小值为 1,最大值为 12。但是,我仍然需要检查以确保字符数是在此字段中为 2,因为前导 0 应用于 1 月至 9 月的月份。
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(),
};