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.

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



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

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"

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

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.