我正在使用 xVal 验证 asp.net MVC 1.0 中的表单
不确定为什么我的正则表达式无法正确验证。
- 它不使用空值进行验证
- 它不使用值“1”、“12”、“123”或“1234”进行验证
- 它的验证值是 “12345”
- 验证值为“12345”
- 它的验证值为“12345 -”
- 验证值为“12345 -1”
- 它使用“12345 -12”的值进行验证......等等
对于邮政编码,我期望以下两种模式之一:
12345
或 12345 -1234
这是我尝试过的两个正则表达式:
(\d{5})((( -)(\d{4}))?)
(\d{5})|(\d{5} -\d{4})
这是我的 xVal 元数据类
[MetadataType(typeof(TIDProfileMetadata))]
public class TIDProfileStep
{
public class TIDProfileMetadata
{
[Required(ErrorMessage = " [Required] ")]
[RegularExpression(@"(\d{5})|(\d{5} -\d{4})", ErrorMessage = " Invalid Zip ")]
public string Zip { get; set; }
}
}
这是我的 aspx 页面:
<% Html.BeginForm("Edit", "Profile", FormMethod.Post); %>
<table border="0" cellpadding="0" cellspacing="0">
<tr>
<td>
<h6>Zip:</h6>
</td>
<td>
<%= Html.TextBox("Profile.Zip")%>
</td>
</tr>
<tr>
<td>
<input type="submit"/>
</td>
</tr>
</table>
<% Html.EndForm(); %>
<% Html.Telerik().ScriptRegistrar()
.OnDocumentReady(() =>
{ %>
<%= Html.ClientSideValidation<TIDProfileStep>("Profile").SuppressScriptTags() %>
<% }); %>
最佳答案
您缺少开始和结束 anchor :
^\d{5}( -\d{4})?$
如果没有这些,您将允许部分匹配。正则表达式通过 \d{5}
匹配字符串 12345 -1
:12345
-1
,并验证它。
关于asp.net - xVal 和正则表达式匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2548348/