#javascript #yup
Вопрос:
Я хочу проверить необязательное поле формы с помощью Yup
const validationSchema = Yup.object().shape({
firstname: Yup.string().required("First name is required").matches(/[A-Za-z]/,"Should contain only alphabets").min(3,'Should contain atleast ${min} alphabets`).max(20,`Should not exceed ${max} alphabets'),
lastname: Yup.string().nullable().notRequired()
})
lastname: Yup.string.nullable().notRequired()
. Я не знаю, как действовать дальше, потому что у меня есть несколько условий для проверки поля, если был введен ввод.
Моим условием проверки являются:
- Должно содержать только алфавиты.
- Должно быть не менее 2 и не более 20 алфавитов.
Ответ №1:
Вы должны использовать аналогичный match
шаблон, который у вас уже есть firstname
. Один из возможных способов сделать это так:
const obj = {
firstname: 'my name',
lastname: 'asd'
};
const yupObj = yup.object().shape({
firstname: yup.string().required("First name is required").matches(/[A-Za-z]/,"Should contain only alphabets").min(3,'Should contain atleast 3 alphabets').max(20,`Should not exceed 20 alphabets`),
lastname: yup.string().nullable().notRequired().matches(/[a-zA-Z]{2,20}/, 'should have alphabets between 2 and 20')
})
yupObj
.validate(obj)
.then(function(value) {
console.log(value);
})
.catch(function(err) {
console.log(err);
});