2013-05-08 75 views
0

我試圖通過MVC正則表達式屬性對錶單字段進行驗證。但是,似乎無論使用什麼正則表達式,驗證只適用於服務器端,但不適用於瀏覽器。MVC驗證正則表達式屬性在C#中工作,但不是JavaScript

我使用驗證的代碼是:

[DisplayName("Email Address")] 
[Required] 
[RegularExpression(@"^[a-zA-Z0-9\.-]*@[a-zA-Z0-9\.]*\.[a-zA-Z\.]{2,6}$", ErrorMessage = "Valid email required.")] 
public string emailAddress { get; set; } 

正則表達式將無法通過驗證與"asd""[email protected]"但它開始於"[email protected]"當它不應該通過驗證。將正則表達式粘貼到http://regexpal.com/將顯示它只能使用完整的電子郵件。

截圖:http://puu.sh/2P05x.png

如果有幫助,這是被在劍道UI電網編輯彈出使用。

+0

可能想從一個非常相似的問題查看這個答案:http://stackoverflow.com/a/8989157/534109 – 2013-05-08 01:00:36

+0

我看到了一段時間以前,做任何客戶端驗證。即:它仍然允許我輸入行話,而不是阻止除有效電子郵件地址之外的任何輸入。 – 2013-05-08 01:09:04

回答

0

你的模型:

[RegularExpression(@"^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,4}\.[0-9]{1,4}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$", ErrorMessage = "invalid.")] 

,並確保jquery.validate.min.jsjquery.validate.unobtrusive.min.js在你的頁面中引用

最後在你的web.config中

<add key="ClientValidationEnabled" value="true" /> 
<add key="UnobtrusiveJavaScriptEnabled" value="true" /> 

或者如果你想用JS做:

^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,4}\.[0-9]{1,4}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$ 
+0

我似乎已經絆倒了一些證據,證明這是一個KendoUI問題(無論是或它是一個格式不正確的正則表達式)。當我嘗試運行它時,使用該正則表達式會得到一個javascript錯誤。 ''未捕獲的SyntaxError:無效的正則表達式:/ ^(?:^(<>?)$)$ /:範圍在字符類中的順序在kendo.aspnetmvc.min.js中:9 – 2013-05-08 02:11:00

+0

我不是熟悉劍道,但看起來你是對的,這個正則表達式和劍道之間存在不一致。你可以使用Firebug進行調試,但它不會很容易 – Karim 2013-05-08 02:21:16

相關問題