:(
が助けてくださいタイプ=番号を使用することはできません、あなたがしているものです後:
^(300(?:\.(?:[0-7]\d{0,2}|8(?:[0-5]\d?|60?)?))?|[0-2]?\d{0,2}(?:\.\d{0,3})?)$
See it here at REGEX STORM。
(REGEXのSTORMがラインの端部に$
と一致しないので???複数行を選択したにもかかわらず、\r
で終了するように、そこに微調整しなければならなかった)
説明
それは2つの部分を持っています。後者の[0-2]?\d{0,2}(?:\.\d{0,3})?
は300未満の数をテストします。オプションで0
,1
または2
([0-2]?
)で始まります。その後、任意の2桁の数字を続けることができます(\d{0,2}
)。次に、オプションで、.
が続きます(存在する場合は、最大3桁(小数)((?:\.\d{0,3})?
)が続きます。
最初の部分 - 300(?:\.(?:[0-7]\d{0,2}|8(?:[0-5]\d?|60?)?))?
- 整数部分が正確に300の場合のテスト。その後、必要に応じて小数点に続く、3例中であってもよい。
[0-7]\d{0,2}
- 最大2桁の数字が続く
7
の範囲0
の数字は、
8(?:[0-5]\d*|60*)?
桁続い8
任意で桁が続く([0-5]\d?
交互)、0
から5
の範囲で指定します。
- または番号86及びoptionall
0
(60?
交替)
これらの部品は、交互に分離された捕捉基 - |
。式全体は、文字列(^
)(または複数行フラグ付き)の先頭と末尾($
)にある必要があります。
編集
は「誤って失敗したいくつかの数字を引き起こすいくつかの調整を完了します。
編集2
完全に一部 "小数点以下の桁数の最大値を" 逃しました。一定。 (「有効な」例で騙された)0.3333
正規表現は、数字の大きさを判断するための素晴らしいツールではありません。 .NETコードを使用して最大限度を確認し、小数点以下のバリデーターも適用できますか?これは、すべての正規表現よりも私にとってはきれいです。 –
@ClasG申し訳ありませんが、私はそれを逃しました。それは有効ではありません。カンマで数字を受け入れたことを示したかっただけです。 – hisoka21