OVH Cloud OVH Cloud

regex

2 réponses
Avatar
heulman
bonjour,

J'ai un petit problème avec une expression régulière.
J'ai un texte qui est transformé en majuscules via toUpperCase(). Seulement
il contient des htmlentities qu'il me faut remettre en minuscules (plus loin
dans le code)

En gros j'ai:

var toto = "zzz & aaa  bbb ? ccc & ddd";
toto = toto.toUpperCase();
toto2 = toto.replace(/(\&[a-z]*\;)/ig, "$1".toLowerCase());

Mais apparemment "$1".toLowerCase() ne fonctionne pas.

Comment faire dans ce cas ?
Attention, je recherche une solution au niveau du replace() et PAS du
toUpperCase().

heulman

2 réponses

Avatar
Rue des Prairies
bonjour,

J'ai un petit problème avec une expression régulière.
J'ai un texte qui est transformé en majuscules via toUpperCase(). Seulement
il contient des htmlentities qu'il me faut remettre en minuscules (plus loin
dans le code)

En gros j'ai:

var toto = "zzz & aaa  bbb ? ccc & ddd";
toto = toto.toUpperCase();
toto2 = toto.replace(/(&[a-z]*;)/ig, "$1".toLowerCase());

Mais apparemment "$1".toLowerCase() ne fonctionne pas.

Comment faire dans ce cas ?
Attention, je recherche une solution au niveau du replace() et PAS du
toUpperCase().

heulman


Bonjour,


essaie avec une fonction comme 2ème argument de replace :

toto2 = toto.replace(/(&[A-Z]+;)/g, function($1) {return
$1.toLowerCase();});

Au passage, si tu définis [A-Z], ce qui est suffisant puisque tu fais un
UpperCase juste avant, tu n'as pas besoin du modificateur /i , de plus
il est inutile d'échapper les caractères & et ;

Olivier.

Avatar
heulman
"Rue des Prairies" a écrit dans le message de news:
43df879b$0$19704$
toto2 = toto.replace(/(&[A-Z]+;)/g, function($1) {return
$1.toLowerCase();});


Nickel !

Au passage, si tu définis [A-Z], ce qui est suffisant puisque tu fais un
UpperCase juste avant, tu n'as pas besoin du modificateur /i , de plus


En fait, il passe "parfois" par un UpperCase.

il est inutile d'échapper les caractères & et ;


c'est noté.


merci,
heulman