2011-07-02 95 views
1

我對如何解決此問題感到有點困惑。似乎標準和普遍發生,但找不到任何有價值的東西。我有一個HTML textarea和一個輸入文本框。我想確認以下內容:檢查javascript中的空白字符串以防止發送空白數據並修剪中間空間

  1. ,用戶不應該被允許在文本區域輸入一串白色空間的 - 所以,如果15個字符是最小16個空白字符只有不應該對有效的數據統計。一個簡單的字符數不會檢測到這一點。
  2. 可以輸入16個空格和一個字母,但這仍然是無效的數據!無論如何要檢查這裏的有效性(它應該基本上按照以下兩點計算爲2個字符)?
  3. 修剪不必要的空格 - 即,如果有人輸入了一個字符/單詞,然後再跟上10個空格然後是另一個字符和另一個空格,我希望它們被修剪爲單個空格。就像您在SO上輸入回答/新問題時發生的情況一樣。如果你輸入一串空格,它會自動修剪它。我試着搜索周圍,但沒有具體的空白。

直觀地說,如果我能得到解決方案#3的工作,我想它可以自動將其饋入char計數器函數,它將是有效的,正確的?

任何想法如何去做到這一點? jQuery的或JavaScript都是可以接受的:)

回答

2

您可以通過正則表達式(live example)取代的一個空間中的多個空間中的所有事件:

var text = "a  b  c"; 
text = text.replace(/ +/g, ' '); 
alert(text); // "a b c" 

通過查找一個空格,然後由一個工作或更多的空間,並將其替換爲只有一個空間。

請注意,該正則表達式是特定於空格的。它不處理其他形式的空白。如果你想用一個空格替換兩個或多個空白字符所有出現,你可以這樣做:

var text = "a \t\r\n b \t\r\n c"; 
text = text.replace(/\s\s+/g, ' '); 
alert(text); // "a b c" 

使用的\s(空格)字符類。請注意,大多數實現在應用\s方面做得很好,但是有一些錯誤與一些Unicode定義的更深奧的空白字符有關,即使規範明確指出它們也應該被處理。 (你可以看看你最喜歡的瀏覽器如何做here,或者在here這個問題上閱讀更多內容。)非常不可能你會關心你描述的用例,你可能不必擔心它。

+0

您能詳細說明'執行錯誤'嗎?我不清楚什麼樣的錯誤,他們是重要的考慮或尋找什麼尋找和找出 – PhD

+0

正則表達式可能應該是'/ [\ W] {2,}/g',所以用戶不能提交15個非單詞字符,如製表符或換行符。 http://jsfiddle.net/NaWJG/ –

+2

@Jim:'\ s'包括製表符,換行符,換頁符等;這是它的目的。使用'\ W'(任何非單詞字符)會刪除一大堆其他字符。例如,在你的評論中使用你的正則表達式來處理我的第一句話將會產生一個包含標籤和換行符的標籤。使用W任何非單詞字符都會刪除很多其他字符。「我無法想象它真的是我們想要的。 :-)(另外,'[\ W]'='\ W',因爲空格不是單詞字符。) –