asp.net - xVal 和正则表达式匹配

标签 asp.net regex xval

我正在使用 xVal 验证 asp.net MVC 1.0 中的表单

不确定为什么我的正则表达式无法正确验证。

  • 使用空值进行验证
  • 使用值“1”、“12”、“123”或“1234”进行验证
  • 它的验证值是 “12345”
  • 验证值为“12345”
  • 它的验证值为“12345 -”
  • 验证值为“12345 -1”
  • 它使用“12345 -12”的值进行验证......等等

对于邮政编码,我期望以下两种模式之一:

1234512345 -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/

相关文章:

asp.net - 混合 WebForms/ASP.NET MVC

javascript - 如何将字符串拆分为单词和数字?

python - 'Ascii' 编解码器无法在位置 186 : ordinal not in range(128) 对字符 u'\u201d' 进行编码

c# - 如果在接口(interface)上定义属性,xVal 会起作用吗?

asp.net - CLSID 为 {00024500-0000-0000-C000-000000000046} 的 COM 对象无效或未注册

asp.net - 如何使用 ASP.NET MVC 中的正确键向 ModelState 添加错误?

c# - Web 应用程序数据层的缺点/优点

c++ - 将 C++ 字符串映射到枚举以获取用户输入

asp.net-mvc - 带有 nHibernate.validator 的 MVC.NET 中的 xVal 不会触发客户端验证

asp.net-mvc - 为 Entity Framework 自动生成元数据类