Есть несколько способов сделать это. До недавнего времени в стандарте использовалась большая схема yup с условной проверкой (с использованием 'when').
Я создал библиотеку с именем Fielder специально для динамической c проверки на уровне поля такой как в вашем примере. Это избавляет от необходимости использовать большую схему и заранее указывать условия.
Ознакомьтесь со вторыми двумя примерами на этой странице , которые динамически добавляют критерии проверки по мере прохождения пользователем формы.
Проверьте репозиторий Fielder и дайте мне знать, если это сработает для вас!