Regex 如何拒绝任何格式正则表达式中的所有零

Regex 如何拒绝任何格式正则表达式中的所有零,regex,Regex,我几乎解决了我的问题,但我想我忘了或放错了一个字符。我想拒绝零值,包括0.00格式 ^((?!0+$)\d+(\.0{2})$ 起初我只想拒绝零值,然后我写了^(?!0+$)\d+$ 然后我有另一个要求,只接受xxx.00这种格式。两位小数。结果就像^((?!0+$)\d+(\.0{2})$ 它确实拒绝.00格式以外的数字,但接受0.00。我确实在第一组否定了零,但是为什么正则表达式接受它呢 0 //false 9 //false 1000.00 //true .00 //false 10.

我几乎解决了我的问题,但我想我忘了或放错了一个字符。我想拒绝零值,包括0.00格式

^((?!0+$)\d+(\.0{2})$

起初我只想拒绝零值,然后我写了
^(?!0+$)\d+$
然后我有另一个要求,只接受xxx.00这种格式。两位小数。结果就像
^((?!0+$)\d+(\.0{2})$
它确实拒绝.00格式以外的数字,但接受0.00。我确实在第一组否定了零,但是为什么正则表达式接受它呢

0 //false
9 //false
1000.00 //true
.00 //false
10.00 //true
434543.12 //false
324.00 //true
40000 //false
0.00 //should be false but mine is true
000.00 //should be false but mine is true

我试图重新组合和重新定位,但没有任何效果。

听起来你可以简单地使用它

^[1-9]\d*\.00$
看你的

  • 如果要允许前导零
  • 如果你想允许的话

    • 听起来你可以简单地使用

      ^[1-9]\d*\.00$
      
      看你的

      • 如果要允许前导零
      • 如果你想允许的话
      您可以使用

      ^(?![0.]+$)\d+\.0{2}$
      

      详细信息

      • ^
        -字符串的开头
      • (?![0.]+$)
        -如果在当前位置的右侧,仅在字符串末尾有一个或多个零或点,则会导致匹配失败的负前瞻
      • \d+
        -1+位
      • \.0{2}
        -由
        和两个零组成的序列
      • $
        -字符串结束
      您可以使用

      ^(?![0.]+$)\d+\.0{2}$
      

      详细信息

      • ^
        -字符串的开头
      • (?![0.]+$)
        -如果在当前位置的右侧,仅在字符串末尾有一个或多个零或点,则会导致匹配失败的负前瞻
      • \d+
        -1+位
      • \.0{2}
        -由
        和两个零组成的序列
      • $
        -字符串结束

      可能
      ^(?![0.]+$)\d+(?:\.0{2})?$
      ?请参见
      我想拒绝零的值
      。。。这究竟意味着什么?你能给我们解释一下吗?@TimBiegeleisen不仅是0.00,还有0000.00,任何数字零。我认为更好的解决方案是分两步进行:第一步验证格式;第二步检查零。第二步,检查所有零,你不需要正则表达式,只需迭代字符串,如果有非零数字字符(不包括点),只需返回“true”。现在,如果你使用@WiktorStribiżew建议的正则表达式,请确保完整地记录它。因为除了正则表达式专家之外,它基本上是不可理解的。这就是正则表达式的问题,它们的功能非常强大,但它们也非常不友好,看起来更像是线噪声。当解决方案如此复杂时,您最好使用更简单、易于阅读、理解和维护的解决方案。可能
      ^(?[0.]+$)\d+(?:\.0{2})?$
      ?请参见
      我想拒绝零的值
      。。。这究竟意味着什么?你能给我们解释一下吗?@TimBiegeleisen不仅是0.00,还有0000.00,任何数字零。我认为更好的解决方案是分两步进行:第一步验证格式;第二步检查零。第二步,检查所有零,你不需要正则表达式,只需迭代字符串,如果有非零数字字符(不包括点),只需返回“true”。现在,如果你使用@WiktorStribiżew建议的正则表达式,请确保完整地记录它。因为除了正则表达式专家之外,它基本上是不可理解的。这就是正则表达式的问题,它们的功能非常强大,但它们也非常不友好,看起来更像是线噪声。如果解决方案如此复杂,那么你最好使用更简单、易于阅读、理解和维护的解决方案。对不起,我犯了一个错误。您的解决方案正在接受非.00格式的数字。可能我太关注0.00了,然后我没有看到其他人<代码>9和
      40000rejected@chronos14然后,卸下
      。请注意,
      (?![0.]+$)
      是一种通用的正则表达式方法,用于避免将等于零的int或float与消费模式匹配,如
      ^\d+(?:\。+)?$
      。很抱歉,我犯了一个错误。您的解决方案正在接受非.00格式的数字。可能我太关注0.00了,然后我没有看到其他人<代码>9和
      40000rejected@chronos14然后,卸下
      。请注意,
      (?![0.]+$)
      是一种通用的正则表达式方法,可以避免将等于零的int或float与消费模式匹配,如
      ^\d+(?:\。\d+)$