Javascript正则表达式删除空格

时间:2011-08-22 17:28:07

标签: javascript regex

所以我正在为JQuery编写一个小插件来删除字符串中的空格。 see here

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

我的正则表达式目前是[ ]+来收集所有空格。 这有效..然而它并没有留下我口中的好味道.. 我也试过[\s]+[\W]+,但都没有工作..

必须有更好(更简洁)的方式来搜索空格。

6 个答案:

答案 0 :(得分:176)

我建议您使用文字符号,并使用\s字符类:

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

使用字符类\s' '之间存在差异,这将匹配许多更多的空白字符,例如'\t\r\n'等..,寻找{ {1}}将仅替换ASCII 32空格。

当你想构建动态模式时,' '构造函数很有用,在这种情况下你不需要它。

此外,如你所说,RegExp没有使用"[\s]+"构造函数,那是因为你传递了一个字符串,你应该“双重逃避”反斜杠,否则他们会被解释为字符串内的字符转义(例如:RegExp(未知转义))。

答案 1 :(得分:13)

"foo is bar".replace(/ /g, '')

答案 2 :(得分: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]+$/;
}

答案 3 :(得分:0)

这同样有效:http://jsfiddle.net/maniator/ge59E/3/

var reg = new RegExp(" ","g"); //<< just look for a space.

答案 4 :(得分:0)

删除字符串中的所有空格

// Remove only spaces
`
Text with spaces 1 1     1     1 
and some
breaklines

`.replace(/ /g,'');
"
Textwithspaces1111
andsome
breaklines

"

// Remove spaces and breaklines
`
Text with spaces 1 1     1     1
and some
breaklines

`.replace(/\s/g,'');
"Textwithspaces1111andsomebreaklines"

答案 5 :(得分:0)

生产中

在一些应用程序中使用它来清理用户生成的内容,以消除多余的空格/返回等,但保留空格的含义。

import os  
os.system("ffmpeg -y -re -acodec pcm_s16le -rtsp_transport tcp -i 
rtsp://192.168.1.200:554/11 -vcodec copy -af asetrate=22050 -acodec aac -b:a 96k test.mp4")