php正则表达式找到确切的数字范围

时间:2011-06-29 10:17:09

标签: php regex

有没有办法使用纯正则表达式检查精确范围内的字符串中的数字?
我的意思是我想检查字符串是否包含范围的数字,例如,VALUE中的数字是1到31,而不是长度。

3 个答案:

答案 0 :(得分:3)

1到31范围内的数字可分为两组:一位数(1-9)和两位数(10-31) 。而后者可以进一步分为整个十年(10-29)和部分十年(30-31)。这些可以表示如下:

[1-9]|[12][0-9]|3[01]

为了匹配整数而不仅仅是它们的一部分,你可以使用环顾四周的断言:

(?<!\d)([1-9]|[12][0-9]|3[01])(?!\d)

此处(?<!…)表示前面没有(?!…)后面没有

答案 1 :(得分:0)

显然可能,因为你总能这样做:

/^(1)|(2)|.....|(30)|(31)$/

我敢打赌,对于确切的情况,表达式可以简化。但是,恕我直言,这只是一种使代码变得不必要地复杂维护的方法。

我打赌你会喜欢这篇文章:How do I write a regular expression that matches an IPv4 dotted address?

答案 2 :(得分:0)

我使用以下内容,希望它可以帮助! ;)

/^([1-2]\d|3[01]|[1-9]){1}$/

或者没有&#34;确切地说是1&#34;,请确保圆括号必须存在:

/^([1-2]\d|3[01]|[1-9])$/