javascript - Yup.string().matches() 在您输入时交替显示有效和无效

标签 javascript formik yup

尝试使用 Yup 验证模式验证 Formik 中的电话号码字段,但是当我使用 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" />

最佳答案

好吧,看来我本可以成为我的正则表达式,毕竟这导致了这种奇怪的行为。

  • 原始正则表达式:/^[0-9]*$/g
  • 修改后的正则表达式:/^[\d]*$/g
  • FINAL regEx: /^\d+$/ <-- 这解决了问题。

我的 regEx 知识有限,所以如果有人能告诉我为什么前两个 regEx 代码导致验证的交替状态,我会很高兴。

关于javascript - Yup.string().matches() 在您输入时交替显示有效和无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57360045/

相关文章:

javascript - MVC Core 如何允许表单嵌入另一个表单

javascript - 使用 yup 和 formik 进行密码验证

reactjs - 如何在 yup 中为 react 选择(单选)分配对象验证

javascript - 如果在外部调用,函数将不起作用

javascript - 语法帮助 - JavaScript 中的 HTML

javascript - InitialValues 未显示在 Formik Field 中 Material UI 组件的自动完成中

javascript - 原生基础输入的 Formik 验证

javascript - 是的:将字段本身与另一个字段进行比较

javascript - 当子组件触发父组件的状态更改时,如何防止父组件重新渲染

javascript - 子组件更改时刷新应用程序状态