正则表达式数值范围

时间:2012-01-06 16:24:49

标签: regex

我需要一个正则表达式,让我输入0-5,000之间的值。我是一个新手,对正则表达式来说相当新。 ^(0?[0-4]?[0-9]?[0-9]?[0-9])$是我迄今为止所拥有的,但它只允许我去4,999。感谢

5 个答案:

答案 0 :(得分:5)

为什么不将字符串的这一部分解析为数字并将其与正则表达式之外的5000进行比较?如果你使用正则表达式,我打赌无论谁想要你的代码都会憎恨你!

答案 1 :(得分:2)

请不要使用正则表达式进行数值范围验证。使用正则表达式来确保字符串匹配模式(即仅包含数字),但只需将字符串转换为数字并验证该数字。

正则表达不是金色的锤子,只有很多指甲才能有效使用。

答案 2 :(得分:2)

按照Ilya Kogan的回答。

如果你真的想要你能做到:

(5000|[1234]?\d{3})(?!\d)

答案 3 :(得分:1)

println '3,1777' ==~ /[0-4]((\,)\d{1,3})?/
println '3,999' ==~ /[0-4]((\,)\d{1,3})?/

这是针对Groovy的。不过,您可以在支持PCRE =)的任何语言中使用正则表达式

答案 4 :(得分:0)

^(5000|[1-4][0-9]{3}|[1-9][0-9]{2}|[1-9][0-9]|[0-9])$