2012-08-27 3 views
1

J'essaie de remplacer certains codes en JavaScript. D'une certaine manière, cela ne fonctionne pas.Javascript - remplacer le code HTML

var name = "check & ' \""; 
alert(name); 
alert(name.replace(/["]/g, "\"")); 
alert(name.replace(/[\]/g, "\"));  

Qu'est-ce que je fais mal?

+0

Ces "codes" sont appelés _entities_, d'ailleurs. – user2428118

Répondre

2

En regex, [] signifie "l'un des caractères suivants". Ainsi, /[\]/g correspondra à un &, un #, un 9, un 2 ou un ;.

Essayez-le sans le [].

var name = "check & ' \""; 
alert(name); 
alert(name.replace(/"/g, "\"")); 
alert(name.replace(/\/g, "\"")); 
3

Ne pas utiliser regex, juste l'analyser:

var d = document.createElement('div'); 
d.innerHTML = "check & ' \""; 
console.log(d.innerText);//all done 

Créer un élément (en mémoire, il ne montrera pas), et utiliser la propriété innerText, ça va revenir l'équivalent texte (c.-à- convertit toutes les entités html en leurs caractères respectifs).

read this

Comme un côté note: la raison pour laquelle /["]/g ne marcherait jamais parce que vous créez une classe de caractères/groupe: il y aura retourné aucun résultat 1 caractère du groupe, et non l'ensemble de la chaîne:

d.innerHTML.replace(/["]/g,'@');//"check @[email protected] ' \"" 
d.innerHTML.replace(/(")/g,'@');//"check & ' \"" 
+0

@DavidThomas: NP, vous aviez raison. Je n'avais aucune raison d'être contondant –

+0

Meh, nous avons tous été là ... =) –

Questions connexes