2009-10-23 51 views
7

看起來像一個簡單的任務 - 獲得一個測試特定長度的字符串,正則表達式: ^ {1500} $正則表達式來限制字符串的長度與新行字符

但如果字符串爲「\ r \ n「比上面的比賽總是失敗!

正確的正則表達式應該如何接受換行字符作爲字符串的一部分?

我有一個<asp:TextBox TextMode="Multiline">和使用的RegularExpressionValidator檢查什麼用戶類型的長度英寸

謝謝 安德烈

回答

12

驗證輸入時,您可以使用RegexOptions.Singleline選項。這將輸入視爲一個單獨的行語句,並對其進行解析。

否則,你可以給下面的表達式一試:

^(.|\s){1,500}$ 

這應多投入工作。

+0

您能否替換大括號的大括號;否則,它的工作,謝謝! – Andrey 2009-10-26 13:57:18

+0

修正了錯字:-) – 2009-10-26 16:09:53

+0

Upvoted,但是那些用於驗證的應該謹慎,在技術上,這可以繞過例如500 [ENTER]。 – AmmarCSE 2017-08-13 05:37:46

0

你能檢查字符串的長度之前剝去換行符?驗證服務器端時很容易。 (在.net中你可以使用自定義的驗證器)

從UX的角度來看,我也實現了一個客戶端'字符計數器'。有很多東西可以找到。 jQuery有幾個選項。然後,您可以實現自定義驗證程序以僅運行服務器端,然後使用字符計數器作爲客戶端驗證。在用戶打字時,他們留下了多少字符,這對用戶來說更好。

+0

我使用asp.net的RegularExpressionValidator,它使用提供的正則表達式執行客戶端和服務器端驗證 – Andrey 2009-10-24 05:11:25

+0

我的建議是使用REGEX唯一服務器端(關閉客戶端用於該控件),因爲這僅僅用於驗證數據進入數據庫。客戶端,而不是事後驗證它,我會建議一個活的「字符計數器」,因爲從用戶體驗角度來看它是一個更好的指標。如果你已經在使用jQuery或者其他的東西,這將會很有意義,因爲它很容易添加。如果沒有,也許不值得僅僅爲這一塊領域。 – 2009-10-26 16:43:06

+0

呃,讓我改述一下......如果REGEX仍然是一個問題,請使用自定義控件驗證服務器端。您可以輕鬆地檢查服務器端的字符串長度,並忘記REGEX。然後使用實時計數字符客戶端的JavaScript方法。 – 2009-10-26 16:46:25

0

無法設置RegexOptions在這裏搞砸了你。由於這是在RegularExpressionValidator中,所以您可以嘗試在正則表達式本身中設置選項。

我認爲這應該工作:

(?s)^.{1,500}$ 

的部分打開的單線選項,這將使點的每一個字符,包括換行符匹配(S?)。對於它的價值,以及將它們設置爲內聯語句所需的表示法。

+0

+1好的建議。順便說一句,不錯的網站(RegexHero.net):) – 2009-10-23 23:54:25

+0

謝謝你。我試試。;) – 2009-10-24 00:04:03

+0

這個表達式在客戶端驗證中斷 - Javascript不理解(?s) – Andrey 2009-10-26 13:51:52

相關問題