2017-01-06 70 views
0

私の要件は、0から100までの10進値を受け入れる正規表現です(1,2,3、....、99,0.1,0.2,0.3、..など)。 ...、99.9,0.01,02,0.03、.....、99.99,00.01~99.99)。 1つの解決策が見つかりました0から100までの10進数を受け入れる正規表現

/^(?!0?0\.00$)\d{1,2}\.\d{2}$/ 

ただし、00.01〜99.99のような小数点以下の値しか受け付けません。

+2

数字を四捨五入して0と100を比較するのは簡単でしょうか? – 31piy

+0

このRegex(100)| [1-9] \ dを試してみませんか? – CrazyMac

+2

私は正規表現でそれをしません。 – Kent

答えて

2

方法について:

^(?!0+(?:\.0+)?$)\d?\d(?:\.\d\d?)?$ 

説明:

^   : begining of string 
    (?!  : negative lookahead, assumes there is no: 
    0+  : 1 or more zero 
    (?:  : non capture group 
     \.0+ : a dot then 1 or more zeros 
    )?$  : end of group, optional, until end of string 
)   : end of lookahead 
    \d?\d  : 1 or 2 digit 
    (?:  : non capture group 
    \.\d\d? : a dot followed by 1 or 2 digit 
)?  : end of group, optional 
$   : end of string 
+1

有望に見えるか、例えば「01」と同様のものを許可しないようにする:['^(?! 0+ \ d?[.0] * $)\ d \ d?(?:\。\ d \ d?)?$ '](https://regex101.com/r/4qM1yG/2) –

+0

ありがとう、それは私の期待通りに動作します...... – Java4you

+0

@ Java4you:よろしくお願いします。回答を受け入れると自由に記入してください:http://stackoverflow.com/help/accepted-answer – Toto

0

この正規表現を試してください。

/^(\d{1,2}\.\d{1,2}|\d{1,2})$/ 
+2

は「00」と一致しますが、そうではありません。右? – Kent

0

方法以下について: ^(100|([0-9][0-9]?(\.[0-9]+)?))$

まず、その後、100番号の外側のケースを扱いますrに向かう組み合わせをエミュレートする。

Javaでこれを使用する場合は、必ずバックスラッシュをエスケープしてください。

+0

'100'は受け入れられません。 – Toto

関連する問題