Existe-t-il une fonction yup qui valide une longueur spécifique?
J'ai essayé .min(5)
et .max(5)
, mais je veux quelque chose qui assure que le nombre est exactement de 5 caractères (c'est-à-dire le code postal).
Je ne pense pas qu'il y ait quoi que ce soit intégré mais c'est facile à implémenter avec test
:
yup.string()
.test('len', 'Must be exactly 5 characters', val => val.length === 5)
@ efru's answer fonctionne très bien pour les nombres de moins de 22 caractères. Cependant, val.toString().length
ne fonctionne pas pour les nombres supérieurs à 22 caractères. La raison en est que les nombres plus importants sont convertis au format exponentiel lorsqu'ils sont convertis en chaîne en javascript.
La solution que j'ai trouvée qui fonctionne le mieux est:
Yup.number (). Test ('len', 'Doit être exactement 25 caractères', val => Math.ceil (Math.log10 (val + 1)) === 25)
Pour référence future, si vous cherchez à valider un numéro (code postal), la solution ci-dessus nécessite un léger ajustement. La fonction doit être:
Yup.number().test('len', 'Must be exactly 5 characters', val => val.toString().length === 5)
.length
ne fonctionne pas sur les nombres, seulement sur les chaînes.