我有一个模式:
const SignupSchema = Yup.object().shape({
decimal: Yup.number().integer('invalid decimal'),
});
我需要检查数字是否为十进制,但我在文档中仅发现Integer
答案 0 :(得分:1)
您可以添加自定义验证测试,例如使用正则表达式。
const SignupSchema = Yup.object().shape({
decimal: Yup.number().test(
'is-decimal',
'invalid decimal',
value => (value + "").match(/^\d*\.{1}\d*$/),
),
});
答案 1 :(得分:0)
const digitsOnly = (value: string) => /^\d*[\.{1}\d*]\d*$/.test(value) || value.length === 0
const schema = yup.object().shape({
inputEntry: yup
.string()
.test('inputEntry', 'The field should have digits only', digitsOnly)
});
以上代码用于在输入字段中只允许小数、整数和空值。