126 votes

Expression régulière Javascript Supprimer les espaces

Je suis donc en train d'écrire un tout petit plugin pour JQuery afin de supprimer les espaces d'une chaîne de caractères. voir ici

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

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

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

302voto

CMS Points 315406

Je vous recommande d'utiliser la notation littérale, et l'option \s classe de caractères :

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

Il y a une différence entre l'utilisation de la classe de caractères \s et juste ' ' Cette méthode permet de faire correspondre un plus grand nombre de caractères d'espacement, par exemple '\t\r\n' etc., à la recherche de ' ' ne remplacera que l'espace blanc ASCII 32.

En RegExp est utile lorsque vous souhaitez construire un modèle dynamique, dans ce cas vous n'en avez pas besoin.

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

15voto

Ransom Briggs Points 977
"foo is bar".replace(/ /g, '')

5voto

Jason Sebring Points 4309

En cours de production et fonctionne avec des ruptures de ligne

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

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

2voto

Neal Points 68710

Cela fonctionne tout aussi bien : http://jsfiddle.net/maniator/ge59E/3/

var reg = new RegExp(" ","g"); //<< just look for a space.

2voto

Stefan Kendall Points 28274
str.replace(/\s/g,'')

Cela me convient.

jQuery.trim propose le hack suivant pour IE, bien que je ne sois pas sûr des versions concernées :

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X