zipcode正则表达式验证

时间:2012-07-17 11:15:54

标签: asp.net regex telerik-radmaskedtextbox

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

答案 0 :(得分:9)

问题是,如果你有短划线,你的正则表达式表明必须存在四位数字。一般情况下这是可以的,但由于你使用输入掩码,破折号总是存在,即使它只有五位数。请尝试以下表达式。

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

答案 1 :(得分:3)

当你通过C#代码隐藏设置它时,你应该只使用\\来逃避。

使用此...

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

如果您在后台通过C#进行设置,则需要\\d,因为\d将被视为控制角色...

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

这是除非你在字符串前面加@,在这种情况下它可以作为...

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

答案 2 :(得分:1)

怎么样: - [0-9]{5}(\-[0-9]{4})?

  • [0-9] 0到9之间的任意数字,{5} =只有5个字符; Altarnativly \d取决于你发现的更容易阅读。
  • ( ) - 创建一个小组
  • \-[0-9]{4} Dash后跟4个数字
  • ?可选 - 零或一个

答案 3 :(得分:0)

使用此方法:

public static boolean validateZip( String zip )
{
   return zip.matches( "\\d{5}" );
}