我需要一个从25开始的整数的正则表达式,我试过没有限制:
^([2-9]\d[0-9]\d{2,})$
但我需要它从25岁开始而不是20岁,我甚至不确定这是否正常。
答案 0 :(得分:1)
你的正则表达式
^([2-9]\d[0-9]\d{2,})$
将匹配以2-9
开头且有5位数或更多位数的任何数字(\d
,[0-9]
各占一位数,\d{2,}
是另外两位或更多位数) 。你想要这样的东西:
^0*(1\d\d|2[0-4]\d|2[5-9]|[3-9]\d)\d*$
正如你所看到的,这是相当丑陋的。如果您使用某种编程语言,则应该断言它是一个数字(^\d*$
)并检查范围而不使用正则表达式。
但我的正则表达式如何运作?
首先我们使用前导0
,因为它们不会更改数字的值。然后我们根据数字的第一个数字进行交替。如果它是1
我们知道我们至少需要两个数字才能大于25
。如果它是2
且第二个数字在0
和4
之间,我们还需要另一个数字。如果是25
或以3
到9
开头,则两位数就足够了。在交替之后,我们只允许任意多个数字。
答案 1 :(得分:0)
测试here
^(2[5-9]([0-9])*|[3-9][0-9]+|[1-2][0-9]{2,})$
答案 2 :(得分:0)
您还可以使用正则表达式检查其中的补充:(消除任何不符合条件的内容:即匹配任何小于25的内容)
-
(否定)[0-2]
和[0-4]
和> 200
)答案 3 :(得分:0)
这是一个比其他一些更简洁的正则表达式:
^(?!(1\d|2[0-4])$)[1-9]\d+$
您可以在此处进行测试:http://www.rubular.com/r/PGdbtGYsWD
方法是匹配[1-9]\d+
,这将是一个两位或更多位数字,并在开头使用negative lookahead来阻止10到24之间任何数字的匹配。
如果应该允许前导零,只需在0*
之后直接添加^
。
答案 4 :(得分:0)
使用正则表达式
^(2[5-9]|[3-9]\d|(?!0)\d{3,})$
或(如果你想允许前导零)
^0*(2[5-9]|[3-9]\d|(?!0)\d{3,})$