正規表現の動作の違い
P粉996763314
P粉996763314 2024-04-01 13:33:29
0
1
339

9 桁を含む必要があるフィールドに一致する正規表現を構築しようとしています

次の正規表現を使用します

リーリー

さて、問題はそれを実行するときです

リーリー

ただし、Yup の match を使用して同じ正規表現 (以下の myRegex で渡される) を使用しようとすると

リーリー

同じ入力に対して、無効なメッセージ、つまり 123456789

が表示されます。

なぜこのようなことが起こるのか気になりますか?

更新: はい、 value.search(regex) を使用します。つまり、私の場合は "123456789".search(/^\d{9,9}$/)

が実行されます。

上記が問題かどうかわかりませんか?

P粉996763314
P粉996763314

全員に返信(1)
P粉362071992

あなたのソリューションでは間違った正規表現が使用されているようです

Yup の search() メソッドを正規表現で使用すると問題が発生します。 search() メソッドは、最初に一致したインデックスを返しますが、完全な文字列はカウントしません。

「123456789」には連続する 9 桁の数字が含まれているため、正規表現を満たし、search() メソッドは最初に出現したインデックスの 0 を返します。 0 は true 値であるため、Yup はそれを一致に失敗したと解釈し、無効なメッセージを返します。

これは、/^\d{9}$/

を使用して試すことができる正規表現です。
いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!