题
我使用xVal验证我的形式asp.net 视1.0
不知道为什么我经常表达的不是验证正确。
- 它不会 不 验证一个空值
- 它不会 不 验证的价值"1", "12", "123", 或者"1234"
- 它将验证用价值的 "12345"
- 它证实与价值"12345"
- 它证实与价值"12345-"
- 它证实与价值"12345-1"
- 它证实与价值"12345-12"...等等
对于一个邮编我预计的两个模式:
12345
或 12345 -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
, 和验证。
不隶属于 StackOverflow