gpt4 book ai didi

regex - 任何大于 0 的数字的正则表达式?

转载 作者:行者123 更新时间:2023-12-03 05:40:11 25 4
gpt4 key购买 nike

我正在寻找一种使用正则表达式检查数字是否大于 0 的方法。

例如:

  • 12将返回 true
  • 0将返回 false。

最佳答案

我不知道 MVC 是如何相关的,但如果你的 ID 是一个整数,这个 BRE 应该这样做:

    ^[1-9][0-9]*$

如果您想匹配实数( float )而不是整数,则需要处理上述情况以及正常的十进制数(即 2.53.3̅ )、模式介于 0 和 1 之间的情况(即 0.25),以及模式小数部分为 0 的情况(即 2.0)。在我们这样做的同时,我们将添加对整数前导零的支持(即 005):

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

请注意,第二个是扩展 RE。同样的事情可以用 Basic RE 表达,但现在几乎所有东西都可以理解 ERE。让我们将表达式分解为更容易理解的部分。

    ^(

插入符号与行开头的空值匹配,因此在正则表达式前面加上插入符号会将其锚定到行的开头。由于下面的或栏,所以存在左括号。稍后会详细介绍。

      0*[1-9][0-9]*(\.[0-9]+)?

这会匹配任何大于 1 的整数或任何 float 。因此我们的 2.0 会匹配,但 0.25 不会。开头的 0* 处理前导零,因此 005 == 5

                              |

在此上下文中,竖线字符是“or-bar”。为了评估该表达式,它具有比其他表达式更高的优先级,并且有效地将两个正则表达式连接在一起。括号用于对由或条分隔的多个表达式进行分组。

第二部分:

                               0+\.[0-9]*[1-9][0-9]*

这匹配以一个或多个 0 字符开头的任何数字(将 + 替换为 * 以匹配零个或多个零,即 .25),后跟一个句点,再后跟一串数字,其中至少包含一个不是 0 的数字。所以这匹配 0 以上和 1 以下的所有内容。

                                                    )$

最后,我们关闭括号,并将正则表达式用美元符号锚定到行尾,就像插入符号锚定到行首一样。

当然,如果您让编程语言对某些内容进行数值计算,而不是尝试将其与正则表达式进行匹配,您将节省 CPU 的麻烦。

关于regex - 任何大于 0 的数字的正则表达式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9038522/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com