【问题标题】:Regex to validate number between two ranges正则表达式验证两个范围之间的数字
【发布时间】:2016-03-16 04:25:28
【问题描述】:

如何使用正则表达式验证 0 到 99999.99 之间的数字?

基本上它应该接受像0.01, 0000.01, .01 and 9999.99这样的值

它也应该只有two values after dot(.)

我尝试了类似下面的方法,但它对我不起作用。

/^[0-9]{1,5}.[0-9]{2}$/ 

decimal is optional

有人可以帮忙吗。

【问题讨论】:

  • 这是javascript 还是java“它不适合我” 是什么意思?

标签: javascript java regex validation


【解决方案1】:

. 字符在正则表达式中具有特殊含义,因此您需要对其进行转义。

不管怎样,让我看看我是否明白了规则:

  • 小数点是可选的
  • 如果没有给出小数点:
    • 1 到 5 位数字之间
  • 如果存在小数点:
    • 小数点前 0 到 5 位之间
    • 小数点后 1 到 2 位之间

由于位数取决于小数点的存在,因此您使正则表达式有两个选择,以| 分隔。

选择 1(无小数点):[0-9]{1,5}

选项 2(小数点):[0-9]{0,5}\.[0-9]{1,2}

由于您需要锚点 (^$),您可以将它们放在两个选项中,或者用括号括住选项集。要使其不被捕获,请使用(?:xxx)

最终的正则表达式是其中之一:

/^[0-9]{1,5}$|^[0-9]{0,5}\.[0-9]{1,2}$/
/^(?:[0-9]{1,5}|[0-9]{0,5}\.[0-9]{1,2})$/

您可以在regex101 上看到第二个生效。

【讨论】:

    【解决方案2】:

    如果是javascript,那么下面的正则表达式可以工作:

    ^\d{0,5}(((\.){0})|((\.){1}\d{1,2}))$
    

    以上所有案例都令人满意。

    【讨论】:

      【解决方案3】:

      谢谢你,^(?:\d{1,5}(?:\.\d{1,2})?|\.\d{1,2})$ 是我想要得到的,这符合我的目的。

      【讨论】:

        【解决方案4】:

        Javascript 正则表达式:

        /^\d{1,5}(\.\d{1,2})?$/
        

        Javascript demo

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-05-29
          • 2015-02-27
          • 2020-01-20
          • 1970-01-01
          • 2016-06-22
          相关资源
          最近更新 更多