使用 Yup 验证来检查号码长度

Validation using Yup to check number length

Yup.number().test('len', 'Must be exactly 5 characters', val => val && val.toString().length === 5)

无法正常工作。如果此字段为空,则给出“必须正好是 5 个字符”,但不应显示任何内容。

尝试将 nullable() 添加到您的 yup 模式和数字的正则表达式中,尝试这样的事情:

const regExp = /\b\d{5}\b/;

Yup.string().matches(regExp, {message: 'Must be exactly 5 numbers', excludeEmptyString: true})

如果 empty/null/undefined

则对 return 添加另一个检查为真
Yup.number().test('len', 'Must be exactly 5 characters', val => !val || (val && val.toString().length === 5))