0

私はEXT-JSを使用しており、フォームの特定のフィールドにVTypeを指定しています。regex

1, 11, 11561.464, 1.0, 56.0,次のような値を受け入れ、次のような値を拒否するには、このフィールドが必要です 。

.1, 1., 56.(数字で始まり数字で終わる値が必要です)

次の正規表現を使用しました。

  1. /^([0-9][0-9]*)([.])?([0-9]*[0-9])$/
    これは、21.,.1 2.2 のような値を受け入れ、1., 2.,1.0 のような値を拒否します。

  2. /^\d+(\.\d)?/
    これは、1.、11 などの値を受け入れます。

  3. /^\d+\.?(\d+)$/
    これは、11.、1.1、11.1 などの値を受け入れ、1 などの値を拒否します。

同じ通常の正規表現が 1.(1 桁 + 10 進数、許容できる) のような値を拒否するのはなぜですか?

4

2 に答える 2

4

あなたの 2 番目のパターンはほとんどそこまでです。1 つ: 文字列終了アンカーを忘れました:

/^\d+(\.\d)?$/

これで、末尾のピリオドはなくなりました。

別のこと:\d+小数点以下 1 桁に制限したくない場合は、2 番目も繰り返す必要があります。

/^\d+(\.\d+)?$/

最後に、明示的に必要でない限り、キャプチャを抑制することをお勧めします。

/^\d+(?:\.\d+)?$/
于 2013-06-05T12:04:58.847 に答える
1

あなたは両方のためにこれを試すことができます

/^\d+(\.\d+)?$/
于 2013-06-05T12:02:40.880 に答える