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.

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)).



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]+$/;
}

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"

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, ' ')

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.