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 № 1To 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.