私の現在の正規表現:
/^[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桁の整数にしか一致しません。