RegEx: remplacer plusieurs espaces par un seul

Avec une chaîne de caractères comme :

"lorem    ipsum     dolor    sit      amet"

Comment utiliser JavaScript pour limiter les espaces à un seul espace au maximum (préférablement avec regex) ?

Voici l’objectif :

"lorem ipsum dolor sit amet"

Si vous souhaitez également prendre en compte les tabulations, les nouvelles lignes, etc., il suffit de remplacer \s\s+ par ’ ’ :

ma_str = ma_str.replace(/\s\s+/g, ' ');

Si vous souhaitez vraiment traiter uniquement les espaces (et donc pas les tabulations, les nouvelles lignes, etc), procédez de cette manière :

ma_str = ma_str.replace(/  +/g, ' ');
var str = "lorem    ipsum     dolor    sit      amet";
str = str.replace(/ {2,}/g,' ');

REMARQUE : Si vous voulez remplacer tous les caractères d’espacement, la méthode la plus efficace est la suivante :

str = str.replace(/\s{2,}/g,' ');

Une méthode plus robuste : Cette méthode permet de supprimer également les espaces initiales et de fin, s’il y en a. Par exemple :

var str = "lorem    ipsum     dolor    sit      amet";

str = str.replace(/^\s+|\s+$|\s+(?=\s)/g, "");

// sortie: "lorem ipsum dolor sit amet"

Voici une solution alternative si vous ne voulez pas utiliser replace (remplacer les espaces dans une chaîne sans utiliser replace Javascript)

var str = "lorem    ipsum     dolor    sit      amet";
var rule = /\s{1,}/g;

str = str.split(rule).join(" "); 

console.log(str);