Javascript Regular Expression Leerzeichen entfernen

88

Also schreibe ich ein kleines Plugin für JQuery, um Leerzeichen aus einem String zu entfernen. siehe hier

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

Mein regulärer Ausdruck ist derzeit [ ]+, alle Leerzeichen zu sammeln. Das funktioniert .. aber es hinterlässt keinen guten Geschmack in meinem Mund .. Ich habe es auch versucht [\s]+und [\W]+aber auch nicht funktioniert ..

Es muss eine bessere (präzisere) Möglichkeit geben, nur nach Räumen zu suchen.

rlemon
quelle

Antworten:

228

Ich würde empfehlen, dass Sie die Literalnotation und die \sZeichenklasse verwenden:

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

Es gibt einen Unterschied zwischen der Verwendung der Zeichenklasse \sund nur ' ', dies entspricht viel mehr Leerzeichen, z. B. '\t\r\n'usw. Wenn Sie nach suchen, ' 'wird nur das Leerzeichen ASCII 32 ersetzt.

Der RegExpKonstruktor ist nützlich, wenn Sie ein dynamisches Muster erstellen möchten. In diesem Fall benötigen Sie es nicht.

Darüber hinaus hat es, wie Sie sagten, "[\s]+"nicht mit dem RegExpKonstruktor funktioniert , weil Sie eine Zeichenfolge übergeben und die Schrägstriche "doppelt maskieren" sollten, da sie sonst als Zeichen-Escapezeichen innerhalb der Zeichenfolge interpretiert werden (z. B.: "\s" === "s"(Unbekannt) Flucht)).

Christian C. Salvadó
quelle
14
"foo is bar".replace(/ /g, '')
Lösegeld Briggs
quelle
1
str.replace(/\s/g,'')

Funktioniert bei mir.

jQuery.trim hat den folgenden Hack für IE, obwohl ich nicht sicher bin, welche Versionen davon betroffen sind:

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

Entfernen Sie alle Leerzeichen in der Zeichenfolge

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

In der Produktion und arbeitet über Zeilenumbrüche hinweg

Dies wird in mehreren Apps verwendet, um benutzergenerierte Inhalte zu bereinigen, wobei zusätzliche Abstände / Rückgaben usw. entfernt werden, wobei jedoch die Bedeutung von Leerzeichen beibehalten wird.

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