我正在努力使用 java 正则表达式。我想验证一个数字是否大于零并且它也不应该是负数
0.00011 - GOOD
1.222 - GOOD
0.000 - BAD
-1.1222 - BAD
所以任何高于零的东西都可以。这在java正则表达式中可能吗?
不要对正则表达式执行此操作。这样做BigDecimal
:
// True if and only if number is strictly positive
new BigDecimal(inputString).signum() == 1
为什么是正则表达式?
您可以简单地执行以下操作
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");
}
尝试
^(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
最好不要使用正则表达式来解决它,这里仍然是如何使用正则表达式解决它的解决方案之一:
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");
}
}
这是演示