特定の長さを検証するyup関数はありますか?
.min(5)
と.max(5)
を試しましたが、数字が正確に5文字になるようにしたいのです(つまり、郵便番号)。
何も組み込まれているとは思いませんが、 test
で実装するのは簡単です。
yup.string()
.test('len', 'Must be exactly 5 characters', val => val.length === 5)
@efruの answer は、22文字未満の数字に最適です。ただし、val.toString().length
は、22文字を超える数値に対しては機能しません。これは、JavaScriptで文字列に変換すると、大きな数値が指数形式に変換されるためです。
私が最も効果的に機能することがわかったソリューションは次のとおりです。
Yup.number()。test( 'len'、'25文字でなければなりません '、val => Math.ceil(Math.log10(val + 1))=== 25)
今後の参考のために、数値(郵便番号)を検証する場合は、上記のソリューションで少し微調整する必要があります。関数は次のとおりです。
Yup.number().test('len', 'Must be exactly 5 characters', val => val.toString().length === 5)
.length
は数値では機能せず、文字列でのみ機能します。