Java Regex的正数仅排除零

时间:2013-08-06 05:53:04

标签: java regex

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

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

所以零以上都没关系。 这在java正则表达式中是否可行?

4 个答案:

答案 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