2008-09-09 405 views
3

我正在處理的ASP.Net 2.0項目的要求限制某個字段最多10個字(不是字符)。我目前使用的CustomValidator控制具有以下的ServerValidate方法:ASP.Net字數與自定義驗證器

Protected Sub TenWordsTextBoxValidator_ServerValidate(ByVal source As Object, ByVal args As System.Web.UI.WebControls.ServerValidateEventArgs) Handles TenWordsTextBoxValidator.ServerValidate 
    '' 10 words 
    args.IsValid = args.Value.Split(" ").Length <= 10 
End Sub 

沒有人有越來越字數進行更徹底的/精確的方法?

回答

1

此正則表達式似乎是偉大的工作:

"^(\b\S+\b\s*){0,10}$" 

更新:上面有一些瑕疵,所以我結束了使用此正則表達式:

[\s\x21-\x2F\x3A-\x40\x5B-\x60\x7B-\xBF]+ 

split()在該字符串正則表達式,並使用結果數組的length來獲取正確的字數。

4

您可以使用其中一個內置驗證器和一個正則表達式來計算單詞。

我有點生疏與正則表達式這樣下去容易對我道:

(\b.*\b){0,10} 
+0

你想這樣做的原因是,內置的正則表達式驗證器也會自動使用JavaScript爲客戶端驗證客戶端。所以,如果他們未通過驗證,您可以保存回傳。 – 2008-09-09 18:58:00

+0

不幸的是,這個正則表達式不匹配,我會玩它,看看我是否可以得到它的工作。謝謝! – travis 2008-09-09 19:16:45

0

我投mharen的回答,並評論其爲好,但由於意見默認是隱藏的,讓我解釋一下再次:

您想使用正則表達式驗證程序,而不是自定義驗證程序的原因是,正則表達式驗證程序也將使用JavaScript自動驗證正則表達式客戶端(如果可用)。如果他們通過驗證,這沒什麼大不了的,但每次有人未通過客戶端驗證時,您都可以將服務器從回發站中保存起來。