Java正規表現に苦労しています。数値がゼロより大きく、負であってはならないかどうかを検証したい
0.00011 - GOOD
1.222 - GOOD
0.000 - BAD
-1.1222 - BAD
したがって、ゼロを超えるものは何でも問題ありません。これはJava正規表現で可能ですか?
なぜ正規表現?
あなたは単に次のようなことをすることができます
double num=0.00011;
if(num>0){
System.out.println("GOOD");
}else{
System.out.println("BAD");
}
または、これを難しい方法でラリーしたい場合は、次のようなことも試すことができます
String num="-0.0001";
char sign=num.split("\\.")[0].charAt(0);
if(sign=='-' || Double.parseDouble(num)==0.0){
System.out.println("BAD");
}else {
System.out.println("GOOD");
}
これを正規表現で行わないでください。でこれを行いBigDecimal
ます:
// True if and only if number is strictly positive
new BigDecimal(inputString).signum() == 1
試す
^(0\\.\\d*[1-9]\\d*)|([1-9]\\d*(\\.\\d+)?)$
どっちが合う
0.1
0.01
0.010
0.10
1.0
1.1
1.01
1.010
3
だがしかし
0
0.0
-0.0
-1
-0.1