是的 - 逗号小数点分隔符而不是点
Yup - comma decimal separator instead of dot
我正在使用像这样的简单 Yup 模式来验证 React Native 中的 Formik 输入字段:
Yup.number().positive()
我的用户将对小数使用逗号分隔符,因此我需要架构为 1.35
等值抛出错误并接受 1,35
等值。使用正则表达式似乎不适合 table,因为 matches
方法仅适用于字符串。
我不知道 Yup 中的函数能够解析不同格式的数字。但一种简单的方法是 transform/replace 逗号不存在,因此它变成数字
number().transform((o, v) => parseInt(v.replace(/,/g, '')))
这样你的号码 10,000
就变成了 10000
并且确实是一个有效的号码。
另一方面 10.000
留下 10.000
无效。
在对 transform
稍加修改之后,这最终对我有用:
Yup.number()
.transform((_, value) => {
if (value.includes('.')) {
return null;
}
return +value.replace(/,/, '.');
})
.positive(),
我正在使用像这样的简单 Yup 模式来验证 React Native 中的 Formik 输入字段:
Yup.number().positive()
我的用户将对小数使用逗号分隔符,因此我需要架构为 1.35
等值抛出错误并接受 1,35
等值。使用正则表达式似乎不适合 table,因为 matches
方法仅适用于字符串。
我不知道 Yup 中的函数能够解析不同格式的数字。但一种简单的方法是 transform/replace 逗号不存在,因此它变成数字
number().transform((o, v) => parseInt(v.replace(/,/g, '')))
这样你的号码 10,000
就变成了 10000
并且确实是一个有效的号码。
另一方面 10.000
留下 10.000
无效。
在对 transform
稍加修改之后,这最终对我有用:
Yup.number()
.transform((_, value) => {
if (value.includes('.')) {
return null;
}
return +value.replace(/,/, '.');
})
.positive(),