首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >25的最小整数的正则表达式

25的最小整数的正则表达式
EN

Stack Overflow用户
提问于 2012-11-30 00:21:04
回答 5查看 121关注 0票数 1

我需要一个正则表达式来表示一个从25开始的整数,没有我尝试过的限制:

代码语言:javascript
复制
^([2-9]\d[0-9]\d{2,})$

但我需要它从25开始,而不是20,我甚至不确定这是否正确。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2012-11-30 00:35:25

下面是一个regex,它比其他一些regex稍微简洁一些:

代码语言:javascript
复制
^(?!(1\d|2[0-4])$)[1-9]\d+$

你可以在这里测试它:http://www.rubular.com/r/PGdbtGYsWD

方法是只匹配[1-9]\d+,它将是一个两位或两位以上的数字,并在开头使用negative lookahead,以防止匹配10到24之间的任何数字。

如果允许使用前导零,只需在^后面直接添加0*即可。

票数 0
EN

Stack Overflow用户

发布于 2012-11-30 00:25:51

您的正则表达式

代码语言:javascript
复制
^([2-9]\d[0-9]\d{2,})$

将匹配任何以2-9开头且具有5位或更多数字的数字(\d[0-9]各贡献一位数字,\d{2,}代表另外两位或更多数字)。你想要这样的东西:

代码语言:javascript
复制
^0*(1\d\d|2[0-4]\d|2[5-9]|[3-9]\d)\d*$

如你所见,这是相当丑陋的。如果您使用的是某种编程语言,则应该断言它是一个数字(^\d*$),并在不使用正则表达式的情况下检查范围。

但是我的正则表达式是如何工作的呢?

首先,我们使用前导0,因为它们不会改变数字的值。然后,我们有一个取决于数字的第一个数字的交替。如果它是一个1,我们知道我们至少需要两位数才能大于25。如果它是一个2,并且第二个数字在04之间,我们还需要另一个数字。如果是25或以39开头,两位数就足够了。在交替之后,我们只允许任意多个数字。

Working demo.

票数 1
EN

Stack Overflow用户

发布于 2012-11-30 00:23:30

测试它here

代码语言:javascript
复制
^(2[5-9]([0-9])*|[3-9][0-9]+|[1-2][0-9]{2,})$
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13630097

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档