Page 1 sur 1

Expressions régulières et replace

Posté : 06 nov. 2006, 00:20
par Sephiroth Lune
salut à tous :D

je cherche à comprendre comment fonctionnent les expressions régulières, mais j'ai vraiment du mal ... une ligne comme celle-ci plante, et me dit "Invalide quantifier ?:)" :

Code : Tout sélectionner

html = html.replace(/(:???:)/g, '<img src="images/smiles/icon_confused.gif" border="0" />');
ce que je veux, c'est remplacer ":???:" par le code "<img ...". en fait, je voudrais même un replace qui n'utilise pas les expressions régulières, ça me sert pas dans ce cas là ...

quelqu'un a une idée ?

Posté : 06 nov. 2006, 08:23
par Cyrano
Le "?" est un caractère réservé des expressions régulière. Pour l'utiliser littéralement, il faut l'échapper. Essaye avec :

Code : Tout sélectionner

html = html.replace(/(:\?\?\?:)/g, '<img src="images/smiles/icon_confused.gif" border="0" />');

Posté : 06 nov. 2006, 10:22
par Sephiroth Lune
oki merci :wink:

finalement je me suis fait une fonction qui fait un remplacement de toutes les occurences, et qui ne prend pas les expressions régulières :?

Posté : 06 nov. 2006, 12:26
par naholyr
Dans un cas simple comme celui-là, tu avais avantage à ne pas passer une expression régulière /\?\?\?/g, auquel cas la méthode String.prototype.replace() de Javascript se comporte comme preg_replace() de PHP, mais plutôt une simple chaîne et elle se comporte alors comme str_replace() de PHP.

Posté : 06 nov. 2006, 12:38
par Sephiroth Lune
le problème, c'est que si je ne passais pas d'expression régulière avec g à la fin, je n'avais pas toutes les occurences de ma chaine qui étaient remplacées :?