Wyrażenie regularne JavaScript Usuń spacje


89

Piszę więc małą wtyczkę do JQuery, która usuwa spacje z łańcucha. Spójrz tutaj

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

moje wyrażenie regularne [ ]+zbiera obecnie wszystkie spacje. To działa .. jednak nie pozostawia dobrego smaku w ustach .. Też próbowałem [\s]+i [\W]+żadna nie działała.

Musi istnieć lepszy (bardziej zwięzły) sposób wyszukiwania samych spacji.

Odpowiedzi:


229

Zalecałbym użycie notacji dosłownej i \sklasy znaków:

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

Istnieje różnica między używaniem klasy znaków \sa just ' ', będzie to pasowało do znacznie większej liczby białych znaków, na przykład '\t\r\n'itp., Szukanie ' 'spowoduje zastąpienie tylko spacji ASCII 32.

RegExpKonstruktor jest przydatna, gdy chcemy zbudować dynamiczny wzór, w tym przypadku nie trzeba go.

Co więcej, jak powiedziałeś, "[\s]+"nie działało z RegExpkonstruktorem, to dlatego, że przekazujesz napis i powinieneś "podwójnie uciekać" ukośnikami, w przeciwnym razie zostaną zinterpretowane jako znaki ucieczki wewnątrz ciągu (np: "\s" === "s"(nieznane ucieczka)).



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

Pracuje dla mnie.

jQuery.trim ma następujący hack dla IE, chociaż nie jestem pewien, na które wersje wpływa:

// 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

Usuń wszystkie spacje w ciągu

// 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

W produkcji i działa na całej linii

Jest to używane w kilku aplikacjach do czyszczenia treści generowanych przez użytkowników, usuwając dodatkowe odstępy / zwroty itp., Ale zachowuje znaczenie spacji.

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

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.