ホームページ  >  に質問  >  本文

正規表現の動作の違い

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

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

リーリー

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

リーリー

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

リーリー

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

が表示されます。

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

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

が実行されます。

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

P粉996763314P粉996763314172日前269

全員に返信(1)返信します

  • P粉362071992

    P粉3620719922024-04-02 09:57:58

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

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

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

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

    を使用して試すことができる正規表現です。

    返事
    0
  • キャンセル返事