31 までの数字のみを含めたい場合、この正規表現は有効ですか?
'[^0-9>31]+ または、アルファベット文字も返されるので、どうにかしてそれらも除外する必要がありますか?
正規表現は 1 つ以上の文字を受け入れますが、それぞれが次のいずれでもない
0 1 2 3 4 5 6 7 8 9 >
あなたが望むものは:
/^(?:[0-9]|[12][0-9]|3[01])$/
正規表現はテキストのソニックスクリュードライバーではなく、魔法のようにあなたが望むすべてのことを行うことができます。正規表現には、数値の値をチェックするものはありません。
あなたがする必要があるのは、ここPerlで書かれた2つのステップです。
$ok = ($s =~ /^\d{1,2}$/) && ($s < 31);
$s
これは、文字列の開始(^
)、1桁または2桁の数字(\d{1,2}
)、そして文字列の終了()の値をチェックします$
。それが当てはまる場合は、の数値$s
が31未満であることも確認します。
はい、レイ・トールの答えから次のような複雑な正規表現を使用できます。
/^(?:[0-9]|[12][0-9]|3[01])$/
しかし、それははるかに読みにくいです。