【问题标题】:Regular Expression to accept only positive numbers and decimals正则表达式只接受正数和小数
【发布时间】:2011-10-10 03:42:38
【问题描述】:

我需要一个只接受正数和小数的 javascript 正则表达式。这就是我所拥有的,但出了点问题——它似乎没有采用单个正数。

/^[-]?[0-9]+[\.]?[0-9]+$/;

例如,9 将不起作用。如果至少有一个正数,我该如何对其进行重组?

【问题讨论】:

  • 因为在每个 [0-9] 字符类后面都有 +,所以没有小数的数字必须至少有两位数。

标签: javascript regex


【解决方案1】:
/^[+]?([0-9]+(?:[\.][0-9]*)?|\.[0-9]+)$/

匹配

0
+0
1.
1.5
.5

但不是

.
1..5
1.2.3
-1

编辑:

要处理科学记数法 (1e6),您可能需要这样做

/^[+]?([0-9]+(?:[\.][0-9]*)?|\.[0-9]+)(?:[eE][+-]?[0-9]+)?$/

如果你想要严格的正数,不为零,你可以这样做

/^[+]?([1-9][0-9]*(?:[\.][0-9]*)?|0*\.0*[1-9][0-9]*)(?:[eE][+-][0-9]+)?$/

【讨论】:

  • @MikeChristensen,它不处理科学记数法,但您可以在$ 之前添加一个可选的[eE][+-]?[0-9]+ 来处理它。
  • 如何在其中添加长度约束,比如只允许在点 ex-12.22 之后编号,但 12.123 无效
  • @Saurabh,您必须修改 [0-9]* 和 [0-9]+ 以使用范围计数:/^[+]?([0-9]+(?:[\.][0-9]{0,2})?|\.[0-9]{1,2})$/
  • @MikeSamuel 谢谢,它可以验证点之后的数字,但不能验证点之前的数字,我尝试修改为 /^[+]?([0-9]{0,2}+(? :[\.][0-9]{0,2})?|\.[0-9]{1,2})$/ 将点前的值限制为 2 位,例如最大值可以是 99.99 和积极的
【解决方案2】:

根据您的需要,有几种不同的方法可以做到这一点:

/^[0-9.]+$/ 匹配 11.1 但不匹配 -1

/^[0-9]+\.[0-9]+$/ 匹配 1.1 但不匹配 1-1

一般来说,我建议使用简单的 regExp 参考指南,例如 http://www.regular-expressions.info/ 来构建表达式,然后在浏览器控制台中使用 javascript 对其进行测试:

"123.45".match(/^[0-9.]+$/)

【讨论】:

  • 这也将包括...等等。
  • 确实如此——在编辑之前,这个问题似乎更广泛。
【解决方案3】:

你可以试试这个——

^\d{0,10}(\.\d{0,2})?$

也是一个很酷的站点来测试以及获取您自己的正则表达式的描述 https://regex101.com/

【讨论】:

    【解决方案4】:

    怎么样:

    ^[.]?[0-9]+[.]?[0-9]*$
    

    【讨论】:

    • 这不也匹配.0.0之类的东西吗?
    【解决方案5】:

    我发现了一些对我有用的有趣的东西!!! 希望你也一样...!!!

    [0-9].[0-9]

    正则表达式只接受带小数点的正数

    比赛: 1、2564、2.5545、254.555

    不匹配: -333、332.332.332、66-665.455、55554-4552

    【讨论】:

      【解决方案6】:

      如果人们感兴趣,我已经做了一个: ^([0-9]*)(.[[0-9]+]?)?$

      但它没有“+”号 同时它也不接受'-'符号

      它接受:

      0
      0.5
      1.0
      1.5
      2.0
      2.5
      3.0
      1
      2
      3
      4
      0.0
      0.1
      0.9
      0.4
      1.3
      1.11
      1.51
      2.01
      01.5
      0.51
      1.1
      .1
      

      拒绝:

      -1.0
      -0.5
      -0.0
      -0.1
      -0.7
      11123.
      1.001.
      .1.1
      

      【讨论】:

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