¿Hay una función yup que valide una longitud específica?
Probé .min( .min(5) y .max(5) , pero quiero algo que garantice que el número tenga exactamente 5 caracteres (es decir, el código postal).
Esta verificación conduce a la mejor experiencia de validación:
Yup.string() .required() .matches(/^[0-9]+$/, "Must be only digits") .min(5, 'Must be exactly 5 digits') .max(5, 'Must be exactly 5 digits')producción:
12f1 // Must be only digits 123 // Must be exactly 5 digits 123456 // Must be exactly 5 digits 01234 // valid 11106 // validDemostración: https://codesandbox.io/s/yup-y6uph
Para referencia futura, si está buscando validar un número (código postal), la solución anterior requiere una pequeña modificación. La función debe ser:
Yup.number().test('len', 'Must be exactly 5 characters', val => val.toString().length === 5)
.length no funciona con números, solo con cadenas.