1

私は近くにいますが、正規表現を完了するためにいくつかの助けが必要です。目標は次のとおりです。

成功するはずです:

  • 10.05
  • 3.00
  • 50

失敗するはずです:

  • 55.99(> 50)
  • 3.001(末尾に「1」を付けることはできません)
  • 0.50(<3)
  • .99(<3)
  • $ 50( "$"は使用できません)
  • 5.2(10進数の場合、2桁後でなければなりません)

これが私がこれまでに持っている正規表現ですが、それは上記のすべてを正しく行うわけではありません:

^([1-4][0-9]|50|[3-9])+(\.[0-9][0-9])?$

誰かが答えを共有できますか?ありがとう!

4

4 に答える 4

2
^(50(\.00)?|([1-4][0-9]|[3-9])(\.[0-9][0-9])?)$

2つの問題がありました。まず、小数点以下の値が50であっても、ゼロ以外の値を許可していました。そこで、それをトップレベルで分離しました。次に、を削除し+ます。そのため、(たとえば、連鎖50して一緒に)はるかに大きな数を持つことができます。43

ただし、Bergiがコメントで述べたように、フォーマットをチェックするだけで、範囲チェックを個別に(正規表現なしで)実行する方がよいでしょう。これはフォーマットチェックになります:

^\d+(\.\d\d)?$
于 2012-10-08T19:11:16.550 に答える
0

一目で...+を削除するだけです

^([1-4] [0-9] | 50 | [3-9])(。[0-9] [0-9])?$

于 2012-10-08T19:11:09.333 に答える
0

+あなたは潜在的なセントの前に削除する必要があります。また、特別な場合として50ドルを処理する必要があります。これは、50ドルは.00その後にのみ使用でき、セントの金額は使用できないためです。

また、を[0-9]数字のショートカットに変更しました。\d

/^((0?[3-9]|[1-4]\d)(\.\d\d)?|50(\.00)?)$/
于 2012-10-08T19:14:14.357 に答える
0

必要な範囲の下限と上限を入力すると、整数の正規表現を返すオンラインユーティリティを見つけました。.制限3〜50の前と制限0〜99の後の部分に使用しました.。結果は次のとおりです。

^0*([3-9]|[1-4][0-9]|50)(\.[0-9]{2})?$
于 2012-10-08T19:15:01.033 に答える