【发布时间】:2018-11-18 09:38:46
【问题描述】:
我正在使用 Yup 验证注册表单,但由于需要 Yup 的 string 和 number 架构中的方法,我正在努力验证信用卡字段。
例如卡号不应超过 16 个字符。使用string 模式中的max 方法可以轻松实现这一点。但是,如果用户输入 16 个字母而不是数字,则当前将通过验证。如果我将架构从string 更改为number,则max 的行为方式不同,而是将字段中的所有数字相加并检查它是否等于小于最大数字。
我需要使用 number 架构的 min 和 max 方法的字段示例是到期月份,其中最小值为 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(),
};
【问题讨论】:
标签: javascript yup