我正在努力使用java正则表达式。 我想验证一个数字是否大于零,它也不应该是负数
0.00011 - GOOD
1.222 - GOOD
0.000 - BAD
-1.1222 - BAD
所以零以上都没关系。 这在java正则表达式中是否可行?
答案 0 :(得分:2)
请勿使用正则表达式执行此操作。使用BigDecimal
执行此操作:
// True if and only if number is strictly positive
new BigDecimal(inputString).signum() == 1
答案 1 :(得分:2)
为何选择正则表达式?
您可以执行以下操作
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");
}
答案 2 :(得分:1)
最好不要使用正则表达式解决它,仍然是如何使用正则表达式解决它的解决方案之一:
public static void main (String[] args) throws java.lang.Exception
{
String str = "0.0000";
Pattern p = Pattern.compile("(^-[0-9]+.+[0-9]*)|(^[0]+.+[0]+$)");
Matcher m = p.matcher(str);
if (m.find()) {
System.out.println("False");
}else{
System.out.println("True");
}
}
以下是demo
答案 3 :(得分: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