9 桁を含む必要があるフィールドに一致する正規表現を構築しようとしています
次の正規表現を使用します
リーリーさて、問題はそれを実行するときです
リーリーただし、Yup の match を使用して同じ正規表現 (以下の myRegex で渡される) を使用しようとすると
リーリー同じ入力に対して、無効なメッセージ、つまり 123456789
が表示されます。なぜこのようなことが起こるのか気になりますか?
更新: はい、 value.search(regex) を使用します。つまり、私の場合は "123456789".search(/^\d{9,9}$/)
が実行されます。上記が問題かどうかわかりませんか?
あなたのソリューションでは間違った正規表現が使用されているようです
Yup の search() メソッドを正規表現で使用すると問題が発生します。 search() メソッドは、最初に一致したインデックスを返しますが、完全な文字列はカウントしません。
「123456789」には連続する 9 桁の数字が含まれているため、正規表現を満たし、search() メソッドは最初に出現したインデックスの 0 を返します。 0 は true 値であるため、Yup はそれを一致に失敗したと解釈し、無効なメッセージを返します。
これは、
を使用して試すことができる正規表現です。/^\d{9}$/