少なくとも 1 桁の数字と最大 5 桁の数字を受け入れる正規表現が必要です。ユーザーが「00」、「000」、「0000」、「00000」のようにゼロを入力すると、式はそのような入力を拒否する必要があります。現在、^[0-9]{1,5}$ を使用しています。
5 に答える
^(?=.*[1-9].*)[0-9]{1,5}$
先読みアサーションを使用して、ゼロ以外の数字が少なくとも 1 つあることを確認します。1 つある場合、式の残りの部分は、1 ~ 5 桁の場合にのみ一致します。両方の条件を満たす必要があります。そうでない場合、式は一致しません。
ただし、数字の文字列 (郵便番号など) とは対照的に、数値を照合しようとしている場合は、正規表現ではなく数値で比較する方がおそらく良いでしょう。
ユーザーの入力が先頭にゼロが付いた 5 桁の数字としてフォーマットされていることを確認したい場合は、次の正規表現が機能します。
^[0-9]{5}(?<!00000)$
これは、負の後読みを使用して、入力された文字列が 5 つのゼロではないことを確認します。
良くないが機能している:
1から99999まで:[1-9][0-9]{0,4}
01から09999まで:0[1-9][0-9]{0,3}
001から00999まで:00[1-9][0-9]{0,2}
0001から00099まで:000[1-9][0-9]{0,1}
00001から00009まで:0000[1-9]
そして、これらすべてをまとめます。
^(0[1-9][0-9]{0,3}|00[1-9][0-9]{0,2}|000[1-9][0-9]{0,1}|0000[1-9]|[1-9][0-9]{0,4})$
編集:更新。
本当に正規表現である必要がありますか?かどうかを確認してみませんか0 < value && value <=99999
?
わかりました。解決策は次のとおりです: ^[1-9][0-9]{0,4}$
1 から 99999 までのすべての数を取る
単純な RangeValidator を使用しないのはなぜですか。
<asp:RangeValidator ID="RangeValidator1" runat="server" ErrorMessage="Value must be greater than zero." ControlToValidate="tbQty" MinimumValue="1" MaximumValue="99999" Type="Integer"></asp:RangeValidator>