2011-02-04 141 views
3

我有這樣的正則表達式,用於驗證輸入(在JavaScript),以確保用戶在文本框沒有進入超過1000個字符:正則表達式驗證文本框長度

^.{0,1000}$ 

,如果你在輸入文字作品確定一行,但是一旦你按下Enter並添加新行,就會停止匹配。我應該如何改變這個RegEx來解決這個問題?

回答

3

你希望是什麼:

/^[\s\S]{0,1000}$/ 

的原因是,.將不匹配換行符。然而

一個更好的辦法是不使用正則表達式和只使用<text area element>.value.length

+0

這個正則表達式我相信不會接受「垃圾」字符,我希望能夠接受。 – Andrey

+0

它會接受一切'\ s'全部是空格,'\ S'全部是非空白,它們就是一切。但是,再次,不要使用正則表達式,這顯然是錯誤的。 –

+0

你的建議工作,謝謝!但我仍不明白爲什麼這是錯的。我意識到,如果我只是在JavaScript中進行比較,我應該已經使用了string.length方法;但我確實想使用內置的asp.net正則表達式驗證器而不是編寫代碼,並且它不會執行那麼糟糕。 – Andrey

3

如果你只是想驗證輸入的長度是不是很容易,只需驗證字符串的長度?

if (input.length > 1000) 
    // fail validation 
6

問題是.與換行符不匹配。我想你可以使用這樣的事情:

^[.\r\n]{0,1000}$ 

它應該工作(只要你not using m),但你真的需要這裏正則表達式?爲什麼不使用.length property

強制性jwz quote

一些人,當遇到一個問題,認爲「我知道,我將使用正則表達式。」現在他們有兩個問題。


編輯:你可以使用一個CustomValidator檢查長度,而不是使用正則表達式的。 MSDN有一個示例可用here

+0

我正在使用ASP.NET正則表達式驗證器 – Andrey

+0

@Andrey使用適當的驗證器。 – Will

+0

表示正則表達式不起作用。馬丁建議的那個雖然做了,所以我都準備好了。 – Andrey