我想要一个正则表达式验证器来验证邮政编码。我的邮政编码长度最多为9位数。用户可以输入5或9.如果他输入5位数或9位数,我应该有效。除此之外的任何事情我都想提出错误。
我试过这个表达
ValidationExpression="\\d{5}(-\\d{4})?$"
这是我的设计我正在使用rad控件
<telerik:RadMaskedTextBox Mask="#####-####" runat="server" ID="txtcontactZipCode"
Width="200px" ValidationGroup="contactValidation">
</telerik:RadMaskedTextBox>
<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-____
有人可以帮助我......
答案 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}" );
}