2011-04-17 55 views
1

我有为什么正则表达式验证不起作用?

<td class="label">@Html.LabelFor(u => u.Link)</td> 
<td> 
    @Html.TextBoxFor(u => u.Link) 
    @Html.ValidationMessageFor(u => u.Link) 
</td> 

形式的Link酒店有RegularExpression

[RegularExpression(@"^(([^\:\/?#]+)\:)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$", ErrorMessage= "invalid URL")] 

但它不被验证。如果我添加[Required]该字段进行验证。

我包括3个脚本:

  • 的jQuery 1.5.2
  • jquery.validate.min.js(默认)
  • jquery.validate.unobtrusive.min.js(默认)

我是否需要包含另一个脚本?为什么它不适用于正则表达式?

+0

它看起来如果表达式的每个部分都是可选的(除了这个'([^?#] *)',因为'*')仍然是可选的,所以捕获/分组后的所有'?',所以一个空字符串会通过,这可能就是为什么你需要使用'Required'属性。总而言之,达林提供了一个更清晰,更容易证明正确的正则表达式。 – bottlenecked 2011-04-18 07:22:53

回答

2

你可能在正则表达式中有一些错误。对不起,我不能发现它,正则表达式是有点像中国人给我(我知道我在这里不是有用)

我已经试过following,它工作得很好:

[RegularExpression(@"((https?|ftp|gopher|telnet|file|notes|ms-help):((//)|(\\\\))+[\w\d:#@%/;$()~_?\+-=\\\.&]*)", ErrorMessage = "invalid URL")] 
+0

是的,有人搞砸了。你的工作,谢谢。 – BrunoLM 2011-04-17 21:15:00

相关问题