Regexp de répétitions ?

Fermé
SolykZ Messages postés 24 Date d'inscription jeudi 9 février 2006 Statut Membre Dernière intervention 7 avril 2009 - 7 avril 2009 à 16:44
Bonjour à tous ! :)


J'aimerais vos conseils quant à l'utilisation, dans JavaScript, des expressions régulières afin de traiter une chaine contenant des caractères répétés. :-)

Je m'explique : une chaine contient "loooooooooooooooooooooooooooooooooooooool". C'est moche. J'y applique donc :

content = content.replace(/(.)\1{3,}/g, "$1");

et j'obtiens alors "lol".

Ceci n'est, bien entendu, qu'un exemple. Si j'ai bien fait ça (à vrai dire je suis allergique aux RegExp), mon expression appliquera le même traitement à tous les caractères répétés au moins trois fois. Donc, "terriiiiiiiiiiiiiiiiiiiiiiiiiiible" deviendra "terrible", "!!!!!!!!!!!!!!!!!" deviendra "!", et ainsi de suite.

J'ai néanmoins oublié une autre dimension à tout ça : les chaines répétées. A savoir qu'en l'état actuel, mon expression ne gère pas des chaines telles que "Mouahahahahahahahahaha". Pour le coup, j'ai essayé :

content = content.replace(/(..)\1{3,}/g, "$1$1$1");

J'obtiens alors "Mouahahah". Mais j'ai l'impression que c'est pas très pratique. Admettons qu'on tombe alors sur "Mouahaahaahaahaa", rien ne sera traité. Car la chaine répétée contient trois caractères.

Existe-t-il un moyen de simplifier tout ça ?

En clair, j'aimerais que toute séquence d'au moins un caractère répétée plus de trois fois soit réduite à une seule apparition. J'ignore si je me suis bien exprimé, sur ce coup, mais si ce n'est pas le cas je tâcherai d'être plus clair. ;-)


Un grand merci à toute personne qui se penchera sur la question. :-)