我有這樣的正則表達式,用於驗證輸入(在JavaScript),以確保用戶在文本框沒有進入超過1000個字符:正則表達式驗證文本框長度
^.{0,1000}$
,如果你在輸入文字作品確定一行,但是一旦你按下Enter並添加新行,就會停止匹配。我應該如何改變這個RegEx來解決這個問題?
我有這樣的正則表達式,用於驗證輸入(在JavaScript),以確保用戶在文本框沒有進入超過1000個字符:正則表達式驗證文本框長度
^.{0,1000}$
,如果你在輸入文字作品確定一行,但是一旦你按下Enter並添加新行,就會停止匹配。我應該如何改變這個RegEx來解決這個問題?
你希望是什麼:
/^[\s\S]{0,1000}$/
的原因是,.
將不匹配換行符。然而
一個更好的辦法是不使用正則表達式和只使用<text area element>.value.length
如果你只是想驗證輸入的長度是不是很容易,只需驗證字符串的長度?
if (input.length > 1000)
// fail validation
問題是.
與換行符不匹配。我想你可以使用這樣的事情:
^[.\r\n]{0,1000}$
它應該工作(只要你not using m
),但你真的需要這裏正則表達式?爲什麼不使用.length
property?
強制性jwz quote:
一些人,當遇到一個問題,認爲「我知道,我將使用正則表達式。」現在他們有兩個問題。
編輯:你可以使用一個CustomValidator
檢查長度,而不是使用正則表達式的。 MSDN有一個示例可用here。
這個正則表達式我相信不會接受「垃圾」字符,我希望能夠接受。 – Andrey
它會接受一切'\ s'全部是空格,'\ S'全部是非空白,它們就是一切。但是,再次,不要使用正則表達式,這顯然是錯誤的。 –
你的建議工作,謝謝!但我仍不明白爲什麼這是錯的。我意識到,如果我只是在JavaScript中進行比較,我應該已經使用了string.length方法;但我確實想使用內置的asp.net正則表達式驗證器而不是編寫代碼,並且它不會執行那麼糟糕。 – Andrey