Expression régulière Javascript Supprimer les espaces


89

J'écris donc un tout petit plugin pour JQuery pour supprimer les espaces d'une chaîne. vois ici

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

mon expression régulière est actuellement [ ]+de collecter tous les espaces. Cela fonctionne ... mais cela ne laisse pas un bon goût dans ma bouche ... J'ai aussi essayé [\s]+et [\W]+mais aucun n'a fonctionné ...

Il doit y avoir une meilleure façon (plus concise) de rechercher uniquement des espaces.

Réponses:


229

Je vous recommande d'utiliser la notation littérale et la \sclasse de caractères:

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

Il y a une différence entre l'utilisation de la classe de caractères \set juste ' ', cela correspondra à beaucoup plus de caractères d'espace blanc, par exemple, '\t\r\n'etc., la recherche ' 'ne remplacera que l'espace vide ASCII 32.

Le RegExpconstructeur est utile lorsque vous souhaitez créer un modèle dynamique, dans ce cas vous n'en avez pas besoin.

De plus, comme vous l'avez dit, cela "[\s]+"n'a pas fonctionné avec le RegExpconstructeur, c'est parce que vous passez une chaîne, et vous devez "double échapper" les barres obliques inverses, sinon elles seront interprétées comme des échappements de caractères à l'intérieur de la chaîne (par exemple: "\s" === "s"(unknown échapper)).



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

Travaille pour moi.

jQuery.trim a le hack suivant pour IE, même si je ne suis pas sûr des versions qu'il affecte:

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

Supprimer tous les espaces dans la chaîne

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

En production et fonctionne à travers les sauts de ligne

Ceci est utilisé dans plusieurs applications pour nettoyer le contenu généré par l'utilisateur en supprimant les espacements / retours supplémentaires, etc., mais conserve la signification des espaces.

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

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.