2011-04-17 171 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

相關問題