【问题标题】:Regex for validating only numbers and dots仅验证数字和点的正则表达式
【发布时间】:2012-08-17 06:50:34
【问题描述】:

我想要一个只接受数字和点的 java 正则表达式。

例如,

             1.1.1 ----valid
             1.1   ----valid
             1.1.1.1---valid
             1.    ----not valid

点不应位于起始位置或结束位置。

【问题讨论】:

  • ".1""1..1""1.11" 呢?你已经尝试过什么了吗?如果是这样,您能否也发布该内容并解释问题所在?
  • 单个数字是否有效!
  • 没有点的数字呢?换句话说,点是可选的还是必需的?

标签: java regex


【解决方案1】:

我想这就是你想要的:

^\d+(\.\d+)*$

解释:它接受用点分隔的数字;它以数字开头和结尾;一个数字可以有多个数字;一个不带点的数字也可以接受。

没有多位数字的变体:

^\d(\.\d)*$

至少需要一个点的变体:

^\d+(\.\d+)+$
^\d(\.\d)+$

不要忘记,在 Java 中,您必须转义 \ 符号,因此代码将如下所示:

Pattern NUMBERS_WITH_DOTS = Pattern.compile("^\\d+(\\.\\d+)*$");

【讨论】:

  • 这对我很有用,我需要获取摘要的索引,所以我修改为:^(\d+[\.\d+]*)。谢谢!
  • 对于用户输入,我需要在他们键入点后面的数字之前接受一个字符串,所以我需要在. 之后的数字之前接受类似1. 的内容。有人可以帮忙吗?
  • @conor909 假设您还想接受一个空字符串然后 ^(\d+\.)*\d*$
【解决方案2】:

我想这就是你想要的:

Pattern.compile("(([0-9](\\.[0-9]*))?){1,13}(\\.[0-9]*)?(\\.[0-9]*)?(\\.[0-9]*)?", Pattern.CASE_INSENSITIVE | Pattern.UNICODE_CASE | Pattern.DOTALL | Pattern.MULTILINE);

解释:它接受用点分隔的数字;它以数字开头和结尾;一个数字可以有多个数字;不接受一个不带点的数字。

这样的输出--

  • 1.1
  • 1.12
  • 1.1.5
  • 1.15.1.4

【讨论】:

    【解决方案3】:
    <!DOCTYPE html>
    <html>
    <body>
    
    <p>RegEx to allow digits and dot</p>
    Number: <input type="text" id="fname" onkeyup="myFunction()">
    
    <script>
    function myFunction() {
        var x = document.getElementById("fname");
        x.value = x.value.replace(/[^0-9\.]/g,"");
    }
    </script>
    
    </body>
    </html>
    

    【讨论】:

      【解决方案4】:

      所以您想要一个需要数字和句点但以数字开头和结尾的正则表达式?

      "[0-9][0-9.]*[0-9]"
      

      但这与1 之类的内容不匹配。它没有任何句点,但确实以数字开头和结尾。

      【讨论】:

      • 这是根据您的情况工作的。这里 (\.\d+)+ 用数字检查至少一个点。 ^\d+(\.\d+)+$ \d+ ( \. \d+ ) + 至少一个数字开始一个点至少一个数字至少一个
      • 我尝试在android中使用它,但它仍然允许在开始时使用点
      【解决方案5】:
      "^\\d(\\.\\d)*$"
      
      1     ----valid (if it must be not valid, replace `*` => `+` )
      1.1.1 ----valid
      1.1   ----valid
      1.1.1.1---valid
      1.    ----not valid
      11.1.1 ---not valid (if it must be valid, add `+` after each `d`) 
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-06-20
        • 2011-12-26
        • 1970-01-01
        • 1970-01-01
        • 2014-12-30
        • 1970-01-01
        • 2017-03-25
        相关资源
        最近更新 更多