-2

我正在努力使用 java 正则表达式。我想验证一个数字是否大于零并且它也不应该是负数

0.00011 - GOOD
1.222 - GOOD
0.000 - BAD
-1.1222 - BAD

所以任何高于零的东西都可以。这在java正则表达式中可能吗?

4

4 回答 4

2

不要对正则表达式执行此操作。这样做BigDecimal

// True if and only if number is strictly positive
new BigDecimal(inputString).signum() == 1
于 2013-08-06T05:57:39.847 回答
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");
   }
于 2013-08-06T06:01:13.787 回答
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
于 2013-08-06T06:19:36.157 回答
0

最好不要使用正则表达式来解决它,这里仍然是如何使用正则表达式解决它的解决方案之一:

 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");
    }
  }

这是演示

于 2013-08-06T06:11:10.837 回答