邮政编码正则表达式验证

问题描述 投票:0回答:4

我想要一个正则表达式验证器来验证邮政编码。我的邮政编码长度最多为 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-____

有人可以帮助我吗..

asp.net regex telerik-radmaskedtextbox
4个回答
9
投票

问题是,如果您有破折号,您的正则表达式表明这四位数字必须存在。一般来说,这没问题,但由于您使用的是输入掩码,破折号始终存在,即使它只有五位数字。尝试下面的表达方式。

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

5
投票

当您通过 C# 代码隐藏设置它时,您应该只使用

\\
来转义。

用这个...

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

如果您在后台通过 C# 设置它,那么您将需要

\\d
,因为
\d
将被视为控制字符...

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

除非您在字符串前面加上

@
,在这种情况下,可以这样做...

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

1
投票

怎么样:-

[0-9]{5}(\-[0-9]{4})?

  • [0-9]
    0 到 9 之间的任意数字,
    {5}
    = 仅 5 个字符;或者
    \d
    取决于您发现更容易阅读的内容。
  • ( )
    - 创建群组
  • \-[0-9]{4}
    短划线后跟 4 个数字
  • ?
    可选 - 零或一

0
投票

使用此方法:

public static boolean validateZip( String zip )
{
   return zip.matches( "\\d{5}" );
} 
© www.soinside.com 2019 - 2024. All rights reserved.