2011-08-22 156 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, '') 
相关问题