-1

31 までの数字のみを含めたい場合、この正規表現は有効ですか?

'[^0-9>31]+ または、アルファベット文字も返されるので、どうにかしてそれらも除外する必要がありますか?

4

2 に答える 2

3

正規表現は 1 つ以上の文字を受け入れますが、それぞれが次のいずれでもない

0 1 2 3 4 5 6 7 8 9 >

あなたが望むものは:

/^(?:[0-9]|[12][0-9]|3[01])$/
于 2012-12-11T22:43:59.500 に答える
1

正規表現はテキストのソニックスクリュードライバーではなく、魔法のようにあなたが望むすべてのことを行うことができます。正規表現には、数値の値をチェックするものはありません。

あなたがする必要があるのは、ここPerlで書かれた2つのステップです。

$ok = ($s =~ /^\d{1,2}$/) && ($s < 31);

$sこれは、文字列の開始(^)、1桁または2桁の数字(\d{1,2})、そして文字列の終了()の値をチェックします$。それが当てはまる場合は、の数値$sが31未満であることも確認します。

はい、レイ・トールの答えから次のような複雑な正規表現を使用できます。

/^(?:[0-9]|[12][0-9]|3[01])$/

しかし、それははるかに読みにくいです。

于 2012-12-11T22:51:36.570 に答える