Как проверить номер телефона с помощью Yup, но это не обязательно? - PullRequest
1 голос
/ 28 апреля 2020

Я могу проверить, набирается ли номер телефона с помощью этого регулярного выражения, но для этого требуется ввести номер телефона в поле ввода. Я пытаюсь сделать номер телефона необязательным. Когда я удаляю .matches phoneRegExp, он работает без необходимости. Я считаю, что это как-то связано с регулярным выражением, которое превращает поле в обязательное. Но я не уверен. Должен ли я сделать это по-другому? спасибо


        const phoneRegExp = /^((\\+[1-9]{1,4}[ \\-]*)|(\\([0-9]{2,3}\\)[ \\-]*)|([0-9]{2,4})[ \\-]*)*?[0-9]{3,4}?[ \\-]*[0-9]{3,4}?$/;

const signUpSchema = yup.object().shape({
  username: yup
    .string()
    .min(4, "Need at least 4 characters.")
    .required("Username is required"),
  firstName: yup
    .string()
    .min(2, "Need at least 2 characters.")
    .required("First name is required"),
  lastName: yup
    .string()
    .min(2, "Need at least 2 characters")
    .required("Last name is required"),
  email: yup
    .string()
    .email()
    .required("Email is required"),
  phoneNumber: yup.string()
    .matches(phoneRegExp, "Phone number is not valid")
    .notRequired(),
  password: yup
    .string()
    .min(6, "Password must be at least 6 characters.")
    .required("Password is required"),
  instructorOrClient: yup
    .string()
    .matches(/(instructor|client)/, "Either instructor or client.")
    .required("Please select instructor or client."),
});

1 Ответ

0 голосов
/ 28 апреля 2020

Вы должны сделать .nullable():

const signUpSchema = yup.object().shape({
...
phoneNumber: yup.string()
    .matches(phoneRegExp, "Phone number is not valid")
    .nullable(),
...
});

Подробнее об этом можно прочитать на документах .

...