2

郵便番号を検証するための正規表現バリデーターが必要です。私の郵便番号の長さは最大 9 桁です。ユーザーは 5 または 9 のいずれかを入力できます。5 桁または 9 桁を入力すると有効になります。それ以外はエラーを発生させたいと思います。

こんな表現をしてみた

ValidationExpression="\\d{5}(-\\d{4})?$"

これは、Rad コントロールを使用している私のデザインです。

<telerik:RadMaskedTextBox Mask="#####-####" runat="server" ID="txtcontactZipCode"
                                                    Width="200px" ValidationGroup="contactValidation">
                                                </telerik:RadMaskedTextBox>
                                                &nbsp;
                                                <asp:RequiredFieldValidator runat="server" ID="rqrdcontactZipCode" ValidationGroup="contactValidation" Display="Dynamic"
                                                    ForeColor="Red" ControlToValidate="txtcontactZipCode" ErrorMessage="Zip Code is required"></asp:RequiredFieldValidator>
                                                    <asp:RegularExpressionValidator ID="regexpcontactZipCode" runat="server" ControlToValidate="txtcontactZipCode"
                                                        ValidationGroup="contactValidation" Display="Dynamic" ForeColor="Red" ErrorMessage="Should be 5 or 9 Digits"
                                                        ValidationExpression="\\d{5}(-\\d{4})?$"></asp:RegularExpressionValidator>

しかし、次のように入力すると有効になりません11111-____

誰かが私を助けることができます..

4

4 に答える 4

9

問題は、ダッシュがある場合、正規表現が 4 桁が存在する必要があることを示していることです。通常はそれで問題ありませんが、定型入力を使用しているため、ダッシュが 5 桁しかない場合でも常に存在します。次の表現を試してください。

ValidationExpression="\d{5}-?(\d{4})?$"
于 2012-07-17T11:20:48.273 に答える
3

C# コード ビハインドを使用して設定する場合にのみ\\、エスケープするために使用する必要があります。

これを使って...

ValidationExpression="\d{5}(-\d{4})?$"

バックグラウンドでC#を介して設定していた場合、制御文字と見なされる\\dため、必要になります...\d

txtcontactZipCode.ValidationExpression = "\\d{5}(-\\d{4})?$";

これは、文字列の前に を付けない限りです。@その場合、次のように実行できます...

txtcontactZipCode.ValidationExpression = @"\d{5}(-\d{4})?$";
于 2012-07-17T11:21:23.407 に答える
1

どうですか:-[0-9]{5}(\-[0-9]{4})?

  • [0-9]0 から 9 までの任意の数字{5}= 5 文字のみ。読み\dやすいと思うものに応じて、代わりに。
  • ( )- グループを作成する
  • \-[0-9]{4}ダッシュに続く 4 つの数字
  • ?オプション - ゼロまたは 1 つ
于 2012-07-17T11:20:40.810 に答える
0

次の方法を使用します。

public static boolean validateZip( String zip )
{
   return zip.matches( "\\d{5}" );
} 
于 2012-11-22T17:46:33.533 に答える