Yup.string (). Match () чередуется между допустимым и недопустимым при вводе

Попытка проверить поле номера телефона в Formik с использованием схемы проверки Yup, но когда я использую Yup.string().matches(/^[0-9]*$/g, 'This is not a number'), она последовательно чередуется между действительным и недействительным при каждом событии изменения.

    phone: Yup.string()
      .trim()     
      .matches(/^[0-9]*$/g, 'This is not a number')    
  }),

поле ввода имеет тип tel. <Field type="tel" id="phone" name="phone" />


person Frederick Rogers    schedule 05.08.2019    source источник


Ответы (1)


Хорошо, похоже, я мог быть своим RegEx после всего, что вызвало такое странное поведение.

  • Исходный regEx: /^[0-9]*$/g
  • Измененный regEx: /^[\d]*$/g
  • FINAL regEx: /^\d+$/ ‹- Это решило проблему.

Мои знания regEx ограничены, поэтому я был бы счастлив, если бы кто-нибудь мог сказать мне, почему два первых кода regEx вызвали переменное состояние проверки.

person Frederick Rogers    schedule 05.08.2019
comment
У меня была такая же проблема с модификатором g, хотя не знаю почему - person Christian Strang; 10.11.2019