2010-07-20 38 views
1

是什麼下面兩個正則表達式

 
(.|[\r\n]){1,1500} 

^.{1,1500}$ 

回答

4

第一匹配最多到1500個字符,第二個(假設還沒有設置一定的正則表達式的選項)最多至1500個字符的一個 第一 單線匹配沒有換行符

+1

......並且它(第二個)只有在字符串中根本不包含換行符或設置了選項'RegexOptions.Multiline'時才這樣做,否則'$'表示「字符串結尾」而不是「結束線「。 – 2010-07-20 09:48:59

+0

Ooo。感謝您的支持。 – cHao 2010-07-20 10:03:51

+0

:)沒有換行符的單行。聽起來很酷。 – serhio 2010-07-20 10:20:02

1

.不符合新的區別線。

+0

它的確如果你指定'RegexOptions.SingleLine'。 – cHao 2010-07-20 09:22:44

2

首先表達式匹配文件(或其他源)的一些 < = 1500 字符
第二表達式匹配一個整個與charsNumber < = 1500

.任何字符匹配除了\ n換行

+1

'.'可以匹配所有的字符,如果你指定'RegexOptions.SingleLine'。但即使如此,這種差異還是存在的。第一個匹配高達1500個字符,第二個匹配*第一個*高達1500個字符。 – cHao 2010-07-20 09:26:59

+0

我在ASP.NET的多行文本框中使用了這個功能。 雖然在Safari瀏覽器中查看我收到錯誤「無效的正則表達式:正則表達式太大」 – nimi 2010-07-20 09:35:26

+0

與兩個或只有一個? – serhio 2010-07-20 09:42:01

1

第二個行的第一個1500個characteres匹配如果該行包含1500個字符以內

+0

說不是*第一*,而是*全部*。 – serhio 2010-07-20 09:53:35

+0

@serhio:正好 – rossoft 2010-07-21 13:06:51

1

如果它是在一個的RegularExpressionValidator使用,你可能想使用這個表達式:

^[\s\S]{1,1500}$ 

這是因爲正則表達式可能在服務器(.NET)或客戶端(JavaScript)上運行。在.NET正則表達式中,您可以使用RegexOptions.Singleline標誌(或其內聯等效項,(?s))使點匹配換行符,但JavaScript沒有此類機制。

[\s\S]匹配任何空白字符或任何而不是空白字符 - 換句話說,任何東西。這是在JavaScript中匹配任何東西,包括換行符的最流行成語; 很多比基於交替的方法更有效,如(.|\n)

請注意,如果您不希望用戶將文本框留空,則仍然需要使用RequiredFieldValidator。