C# 为什么正则表达式验证不起作用?
我有一张我的表格C# 为什么正则表达式验证不起作用?,c#,asp.net-mvc,validation,asp.net-mvc-3,C#,Asp.net Mvc,Validation,Asp.net Mvc 3,我有一张我的表格 <td class="label">@Html.LabelFor(u => u.Link)</td> <td> @Html.TextBoxFor(u => u.Link) @Html.ValidationMessageFor(u => u.Link) </td> 但它并没有得到验证。如果我添加[必需],则会验证该字段 我包括3个脚本: jquery 1.5.2 jquery.validate.
<td class="label">@Html.LabelFor(u => u.Link)</td>
<td>
@Html.TextBoxFor(u => u.Link)
@Html.ValidationMessageFor(u => u.Link)
</td>
但它并没有得到验证。如果我添加[必需]
,则会验证该字段
我包括3个脚本:
- jquery 1.5.2
- jquery.validate.min.js(默认)
- jquery.validate.unobtrusive.min.js(默认)
我需要包含另一个脚本吗?为什么它不适用于正则表达式?您可能在正则表达式中有一些错误。对不起,我看不出来,正则表达式对我来说有点像中文(我知道我在这里没有帮助) 我试过了,效果很好:
[RegularExpression(@"((https?|ftp|gopher|telnet|file|notes|ms-help):((//)|(\\\\))+[\w\d:#@%/;$()~_?\+-=\\\.&]*)", ErrorMessage = "invalid URL")]
是的,那件有点不对劲。您的成功了,谢谢。看起来表达式的每个部分都是可选的(捕获/分组后的所有
?
,除了这个([^?#]*)
,因为*
,它仍然是可选的),所以会传递一个空字符串,这可能就是您需要使用必需的属性的原因。总之,Darin提供了一个更干净、更容易证明正确的正则表达式。
[RegularExpression(@"((https?|ftp|gopher|telnet|file|notes|ms-help):((//)|(\\\\))+[\w\d:#@%/;$()~_?\+-=\\\.&]*)", ErrorMessage = "invalid URL")]