我使用xVal验证我的形式asp.net 视1.0

不知道为什么我经常表达的不是验证正确。

  • 它不会 验证一个空值
  • 它不会 验证的价值"1", "12", "123", 或者"1234"
  • 它将验证用价值的 "12345"
  • 它证实与价值"12345"
  • 它证实与价值"12345-"
  • 它证实与价值"12345-1"
  • 它证实与价值"12345-12"...等等

对于一个邮编我预计的两个模式:

1234512345 -1234

这里有两个regex我试过:

(\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() %>
<% }); %>
有帮助吗?

解决方案 2

我没说我使用一个面罩的插件对于我的输入输领域。掩插件中可以找到 在这里,.

因此,在文本框如果我是填补在只有第一个5位数,然后签下一个领域是将验证的假由于掩模的插件,我已经使用。掩模,将在下划线字为空白的可能性....所以,例如:

_____ -____ 会掩模,它将把在空场上的焦点。如果我填写的第一个5位数字我会:

12345 -____

然后如果我签到下一个领域, -____ 被删除,但输入的领域需要重新验证onblur.

所以我们做的是重新验证输入场上的模糊,现在它的工作。

$('#Zip').blur(function() {
        $(this).validate();
});

我用这个regex ^\d{5}( -\d{4})?$

其他提示

你错的开始和结束锚:

^\d{5}( -\d{4})?$

没有这些你允许部分匹配。Regex相匹配的字符串 12345 -1 通过 \d{5}: 12345-1, 和验证。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top