Formik,是的 - 如何检查是十进制数

Formik, Yup - How to check is Decimal number

我有一个模式:

const SignupSchema = Yup.object().shape({
  decimal: Yup.number().integer('invalid decimal'),
});

我需要检查数字是否为十进制,但我在文档中只找到 Integer

您可以添加自定义验证测试,例如使用正则表达式。

const SignupSchema = Yup.object().shape({
  decimal: Yup.number().test(
    'is-decimal',
    'invalid decimal',
    value => (value + "").match(/^\d*\.{1}\d*$/),
  ),
});
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)
});

以上代码用于在输入字段中只允许使用小数、整数和空值。