Probleme avec les expressions regulières (string.replace())

Signaler
Messages postés
96
Date d'inscription
mercredi 16 avril 2003
Statut
Membre
Dernière intervention
26 avril 2007
-
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
-
Voilà je souhaite transformer du code perso (, , ect) en code HTML.
Voilà comment je fais :

var text=document.forms[0].corps.value;
text=text.replace(/(\n\r)|(\r\n)|\r|\n/g,"
");
text=text.replace(/\[x\](.+)\[\/x\]/g,"<x>$1</x>");


Mais dès qu'il y a plusieurs du même type ça ne marche pas :
Exemple :
[x]Test 1/x[x]Test 2/x

Et ça me sort :
<x>Test 1/x[x]Test 2</x>

3 réponses

Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
32
[size=1][b][brown]Bonjour[black]
j'ai eu le même problème, et j'ai
fini par faire une boucle, car il me
semblait qu'effectivement on ne
remplaçait que la 1ère occurence.
et sur du "texte tout simple"
[brown]Cordialement. Bul
Messages postés
96
Date d'inscription
mercredi 16 avril 2003
Statut
Membre
Dernière intervention
26 avril 2007

Je ne crois pas que ce soit le même problème.
Pour remplacer toutes les occurences, il faut rajouter un paramêtre "g" :
text=text.replace(/\[x\](.+)\[\/x\]/g,"<x>$1</x>");
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
32
Bonjour
par exemple pour simplifier:

<script language="javascript">
sor.value=ent.value.replace
(/(\[x\])([A-Za-z0-9 ]+)(\[\/x\])/g,"<x>$2</x>");
</script>
si .+ au lieu de [A-Za-z0-9 ]+
$2 = Test 1/x[x]Test 2/x[x]Test 3
est-ce normal ? je ne sais pas ?
que veut dire . ? tout vient de là ? non ?
j'aide ou je perturbe ?
Cordialement. Bul