Javascript Regular Expression Rimuovi spazi


90

Quindi sto scrivendo un piccolo piccolo plugin per JQuery per rimuovere gli spazi da una stringa. Vedere qui

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

la mia espressione regolare è attualmente quella [ ]+di raccogliere tutti gli spazi. Funziona .. tuttavia non mi lascia un buon sapore in bocca .. ho anche provato [\s]+e [\W]+non ha funzionato ..

Deve esserci un modo migliore (più conciso) di cercare solo gli spazi.

Risposte:


231

Ti consiglio di utilizzare la notazione letterale e la \sclasse di caratteri:

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

C'è una differenza tra l'utilizzo della classe di caratteri \se semplicemente ' ', questo corrisponderà a molti più spazi vuoti , ad esempio '\t\r\n'ecc., Cercando ' 'sostituirà solo lo spazio vuoto ASCII 32.

Il RegExpcostruttore è utile quando vuoi costruire un pattern dinamico, in questo caso non ne hai bisogno.

Inoltre, come hai detto, "[\s]+"non ha funzionato con il RegExpcostruttore, è perché stai passando una stringa, e dovresti "fare un doppio escape" alle barre rovesciate, altrimenti verranno interpretate come caratteri di escape all'interno della stringa (es:"\s" === "s" (unknown fuga)).



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

Per me va bene.

jQuery.trim ha il seguente trucco per IE, anche se non sono sicuro di quali versioni influisca:

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

Rimuovi tutti gli spazi nella stringa

// 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 produzione e lavora su interruzioni di linea

Viene utilizzato in diverse app per pulire i contenuti generati dagli utenti rimuovendo spazi / ritorni extra, ecc. Ma mantiene il significato degli spazi.

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

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.