正则表达式值介于(但不包括)0 - 32之间

时间:2015-04-04 16:11:29

标签: regex

我现在的正则表达式:

/^[0-9]{3}$/

如果值是一个长度为2的整数,则匹配。

我需要通过仅匹配0 - 32之间的值来进一步扩展它。

0 <- not match
1 <- match
2 <- match
...
29 <- match
30 <- match
32 <- not match
33 <- not match

测试你的正则表达式: https://regex101.com/

2 个答案:

答案 0 :(得分:2)

这有效:

/^((?:[1-9])|(?:[1-2][0-9])|(?:3[0-1]))$/

用Python测试:

for i in range(0,321):
    m=re.match(r'^((?:[1-9])|(?:[1-2][0-9])|(?:3[0-1]))$', str(i))
    if m:
        print i
# prints 1-31...

在Bash / Perl中测试:

$ echo {0..3500} | tr ' ' '\n' | perl -nle 'print $1 if /^((?:[1-9])|(?:[1-2][0-9])|(?:3[0-1]))$/'
prints 1-31

regex101

中进行测试

答案 1 :(得分:0)

可以像这样形成所需的正则表达式

/^[1-9]$|^[1-2][0-9]$|^3[0-2]$/

此外,给定的正则表达式只匹配3位整数。