/ Wartość / regex zawiera się między (ale nie obejmuje) 0 - 32 [duplikat] - regex

wartość regex znajduje się między (ale nie zawiera) 0 - 32 [duplicate] - regex

moje obecne wyrażenie regularne:

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

Będzie to pasować, jeśli wartość jest liczbą całkowitą o długości 2.

Muszę to nieco rozwinąć, dopasowując tylko wartości od 0 do 32.

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

Przetestuj wyrażenie regularne: https://regex101.com/

Odpowiedzi:

2 dla odpowiedzi № 1

To działa:

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

Przetestuj w Pythonie:

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...

Test w Bash / Perl:

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

I przetestuj regex101


0 dla odpowiedzi nr 2

Wymagane wyrażenie regularne można utworzyć w ten sposób

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

Ponadto podane wyrażenie regularne będzie pasować tylko do 3 cyfr.