zipcode正则表达式验证

Dor*_*eka 2 regex asp.net 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>
Run Code Online (Sandbox Code Playgroud)

但如果我输入如下,我无法生效 11111-____

有人能帮我吗..

Mik*_*oud 9

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

ValidationExpression="\d{5}-?(\d{4})?$"
Run Code Online (Sandbox Code Playgroud)