有没有办法使用纯正则表达式检查精确范围内的字符串中的数字?
我的意思是我想检查字符串是否包含范围的数字,例如,VALUE中的数字是1到31,而不是长度。
答案 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])$/