【问题标题】:allow zero numbers with REGEx使用 REGEx 允许零数字
【发布时间】:2014-05-22 10:31:08
【问题描述】:

我有一个适用于正数的正则表达式,但希望它在用户只输入 0 时也能正常工作,如何做到这一点?我试图学习如何做到这一点,但到目前为止没有任何成功

正则表达式:^(?!(?:0|0\.0|0\.00)$)[+]?\d+(\.\d|\.\d[0-9])?$

编辑我很抱歉可能不够清楚

我希望它接受所有小数点后 2 位的正值,但我也希望它只接受数字零

喜欢: 0 0.0 0.00 1.25 1.2 并且不接受 -0.01 以下的任何内容

【问题讨论】:

  • 你使用什么编程语言?
  • @NirMH 应该没关系。
  • @GamesBrainiac - 来自正则表达式标签信息描述:“记住 [to] 包含指定您正在使用的编程语言或工具的标签” - stackoverflow.com/questions/tagged/regex
  • @Kobi 我已经纠正了。谢谢你告诉我,伙计。

标签: regex


【解决方案1】:

根据您的要求,我想出了这个:

^\+?\d*(?:\.\d{1,2})?$

这是你要找的吗?

上述正则表达式将所有正小数匹配到小数点后两位,带或不带'+'符号或前导整数,以下是一些不匹配的示例。

1.324
3.
-23.1

【讨论】:

  • 这有一个问题,表达式允许匹配“无”,快速修复:通过将* 更改为+,删除匹配.32 之类的小数的能力跨度>
【解决方案2】:

你可以删除你的否定前瞻:

^[+]?\d+(\.\d\d?)?$

【讨论】:

    【解决方案3】:

    我认为你有问题是因为负前瞻,看看this

    [+]?\d+(\.\d|\.\d[0-9])?
    

    但您可以进一步简化它,例如 so:

    (?:\d*\.)?\d+
    

    【讨论】:

      【解决方案4】:

      ^-?[0-9]+$ 如果你想强制- 为负数,而不是+ 为正数。

      ^-?[0-9]+.?[0-9]*$ 也是小数部分。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-09-26
        • 2022-06-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多