【问题标题】:Java Regex for positive numbers only excluding zeroJava Regex 仅用于正数,不包括零
【发布时间】:2013-08-06 05:53:04
【问题描述】:

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

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

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

【问题讨论】:

  • 有什么理由用正则表达式来做这个?
  • 我怀疑你是否在“苦苦挣扎”。你能展示你已经拥有的东西吗?
  • @Kobi 我的问题与我的另一篇帖子stackoverflow.com/questions/18071219/… 有关,因为没有人回答,所以我认为正则表达式会帮助我。但根据下面的答案,我想我只能使用自定义验证器了。再次感谢您的宝贵时间
  • 感谢您的回答,并且我对其他线程的一些概念有了清晰的认识。版主可以根据需要关闭它

标签: java regex


【解决方案1】:

不要对正则表达式执行此操作。使用BigDecimal 执行此操作:

// True if and only if number is strictly positive
new BigDecimal(inputString).signum() == 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");
       }
    

    【讨论】:

      【解决方案3】:

      试试

      ^(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
      

      【讨论】:

        【解决方案4】:

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

         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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2022-01-03
          • 2011-03-14
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多