Expressão regular Javascript Remover Espaços

90

Então, estou escrevendo um pequeno plugin para JQuery para remover espaços de uma string. Veja aqui

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

minha expressão regular atualmente é [ ]+coletar todos os espaços. Isso funciona .. porém não deixa um gosto bom na minha boca .. Eu também tentei [\s]+e [\W]+mas não funcionou ..

Tem que haver uma maneira melhor (mais concisa) de procurar apenas espaços.

Rlemon
fonte

Respostas:

231

Eu recomendo que você use a notação literal e a \sclasse de caracteres:

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

Há uma diferença entre usar a classe de caractere \se apenas ' ', isso vai corresponder a muito mais caracteres de espaço em branco, por exemplo, '\t\r\n'etc., procurando ' 'substituirá apenas o espaço em branco ASCII 32.

O RegExpconstrutor é útil quando você deseja construir um padrão dinâmico, neste caso você não precisa dele.

Além disso, como você disse, "[\s]+"não funcionou com o RegExpconstrutor, isso porque você está passando uma string e deve "fazer um duplo escape" das barras invertidas, caso contrário, elas serão interpretadas como escapes de caracteres dentro da string (por exemplo: "\s" === "s"(desconhecido escapar)).

Christian C. Salvadó
fonte
14
"foo is bar".replace(/ /g, '')
Ransom Briggs
fonte
1
str.replace(/\s/g,'')

Funciona para mim.

jQuery.trim tem o seguinte hack para o IE, embora eu não tenha certeza de quais versões ele afeta:

// 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]+$/;
}
Stefan Kendall
fonte
1

Remova todos os espaços na string

// 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"
DarckBlezzer
fonte
1

Em produção e funciona em quebras de linha

Isso é usado em vários aplicativos para limpar o conteúdo gerado pelo usuário, removendo espaçamento / retornos extras etc., mas mantém o significado dos espaços.

text.replace(/[\n\r\s\t]+/g, ' ')
Jason Sebring
fonte
0

Isso funciona tão bem: http://jsfiddle.net/maniator/ge59E/3/

var reg = new RegExp(" ","g"); //<< just look for a space.
Naftali também conhecido como Neal
fonte