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

时间:2020-06-15 14:09:24

标签: javascript validation formik yup

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

Yup.number().positive()

我的用户将对逗号使用小数点分隔符,因此我需要使用架构为1.35之类的值引发错误并接受1,35之类的值。似乎无法使用正则表达式,因为matches方法仅适用于字符串。

2 个答案:

答案 0 :(得分:2)

transform进行了一些修改之后,最终对我有用:

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

答案 1 :(得分:0)

我不知道Yup中的函数能够解析不同格式的数字。但是一种简单的方法是不做任何转换/替换逗号,使其变成数字

number().transform((o, v) => parseInt(v.replace(/,/g, '')))

这样,您的号码10,000就会变成10000,并且确实是有效号码。

另一方面,10.000停留在10.000上,