2011-08-22 177 views
55

因此,我正在爲JQuery編寫一個小插件來從字符串中刪除空格。 see hereJavascript正則表達式刪除空格

(function($) { 
    $.stripSpaces = function(str) { 
     var reg = new RegExp("[ ]+","g"); 
     return str.replace(reg,""); 
    } 
})(jQuery); 

我的正則表達式是目前[ ]+收集所有的空間。 這工作。但是它不會留下好味道在我嘴裏.. 我也試過[\s]+[\W]+但既不工作..

必須有搜索只是一個更好的(更簡潔)的方式空間。

回答

141

我會建議你使用的文字符號,以及使用\s字符類:

//.. 
return str.replace(/\s/g, ''); 
//.. 

有使用字符類\s,只是' '之間的差異,這會匹配很多更多的空白字符,例如'\t\r\n'等。尋找' '將只替換ASCII 32空格。

構造函數RegExp當你想構建一個動態模式,在這種情況下,你不需要它。

此外,正如你所說,"[\s]+"沒有與RegExp構造函數,這是因爲你傳遞一個字符串,你應該「雙逃避」反斜槓,否則將被解釋爲字符轉義字符串(例如:"\s" === "s"(未知逃脫))。

1
str.replace(/\s/g,'') 

爲我工作。

jQuery.trim有IE下面的技巧,但我不知道它會影響什麼版本:

// Check if a string has a non-whitespace character in it 
rnotwhite = /\S/ 

// IE doesn't match non-breaking spaces with \s 
if (rnotwhite.test("\xA0")) { 
    trimLeft = /^[\s\xA0]+/; 
    trimRight = /[\s\xA0]+$/; 
} 
11
"foo is bar".replace(/ /g, '')