0

タイトルでまとめてみました。

数字とカンマを一致させる正規表現が必要ですが、0 でない限り、0 で始まる数字は必要ありません。

私のユーザーはフィールドに時間を入力するので、0.3 時間を入力できる必要がありますが、002 または 09 を書き込むことは許可されていません。

私はこの正規表現を持っています

^[0-9]*\,?[0-9]+$

0 の後にコンマが続く場合を除き、0 で開始できないように拡張するにはどうすればよいですか?

4

3 に答える 3

2

これを行うために、すべてを単一の正規表現に強制する必要はありません。

複数の正規表現を使用し、それぞれが特定のチェックを行うと、はるかに明確になります。

if ( /^[0-9]+,[0-9]+$/ || /^[1-9][0-9]*$/ )

ここでは、2 つの異なるチェックを行っています。「これが一致するか、他のものが一致するかのどちらか」の場合、両方の条件を 1 つの正規表現に詰め込む必要はありません。

ロジックを正規表現に詰め込もうとするのではなく、ホスト言語の表現形式を使用してください。

于 2012-12-20T20:55:04.130 に答える
2

これはあなたのニーズに合うはずです:

^0,\d*[1-9]|[1-9]\d*$
  • いずれか0,\d*[1-9]: 0、その後にカンマ、その後に 0 以上の数字、その後に 1 から 9 までの 1 つの数字
  • or [1-9]\d*: 1 から 9 までの数字の後に 0 個以上の数字が続く

一致:

  • 0,3
  • 0,03
  • 3
  • 30

一致しません:

  • 0
  • 0,0
  • 0,30
  • 03
于 2012-12-20T17:07:56.390 に答える
2

もう一つ:)

^(0|[1-9]\d*(|,\d+)|0,\d+)$
于 2012-12-20T17:14:21.570 に答える