/ /正規表現の値は0〜32の間です(ただし含まない)。[duplicate] - regex

正規表現の値は0〜32の間です(ただし含まない)[duplicate] - 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/

回答:

回答№1は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


回答№2の場合は0

必要な正規表現をこのように形成することができます

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

また、与えられた正規表現は3桁の整数にしか一致しません。