是的 - 逗号小数点分隔符而不是点

apg*_*gsn 3 javascript validation yup formik

我使用像这样的简单Yup模式来验证 React Native 中的 Formik 输入字段:

Yup.number().positive()
Run Code Online (Sandbox Code Playgroud)

我的用户将使用逗号分隔符作为小数,因此我需要架构为诸如 之类的值抛出错误1.35并接受诸如 之类的值1,35。使用正则表达式似乎不可行,因为该matches方法仅适用于字符串。

apg*_*gsn 10

经过一番修改后transform,这最终对我有用:

Yup.number()
   .transform((_, value) => {
      if (value.includes('.')) {
        return null;
      }
      return +value.replace(/,/, '.');
    })
    .positive(),
Run Code Online (Sandbox Code Playgroud)