我正在使用像这样的简单Yup模式来验证React Native中的Formik输入字段:
Yup.number().positive()
我的用户将对逗号使用小数点分隔符,因此我需要使用架构为1.35
之类的值引发错误并接受1,35
之类的值。似乎无法使用正则表达式,因为matches
方法仅适用于字符串。
答案 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
上,