C'est une unicode, a échappé à la chaîne. D'abord la chaîne a été échappé, puis encodé en unicode. Pour revenir à la normale:
var x = "http\\u00253A\\u00252F\\u00252Fexample.com";
var r = /\\u([\d\w]{4})/gi;
x = x.replace(r, function (match, grp) {
return String.fromCharCode(parseInt(grp, 16)); } );
x = unescape(x);
console.log(x);
Pour expliquer: - je utiliser une expression régulière pour rechercher \u00253A
. Cependant, depuis que j'ai besoin d'une partie seulement de cette chaîne pour remplacer mon opération, j'ai utiliser des parenthèses pour isoler la partie que je vais réutiliser, 253A
. Cette partie isolée est appelé un groupe.
L' gi
à la fin de l'expression désigne, il devrait correspondre à toutes les instances de la chaîne, et pas seulement le premier, et que la correspondance doit être sensible à la casse. Cela peut paraître inutile donné l'exemple, mais il ajoute de la polyvalence.
Maintenant, pour convertir à partir d'une chaîne à l'autre, j'ai besoin d'exécuter certaines étapes, sur chaque groupe de chaque match, et je ne peux pas le faire simplement en transformant la chaîne. Heureusement, la Chaîne.remplacer l'opération peut accepter une fonction qui sera exécutée pour chaque match. Le retour de cette fonction remplacera le match lui-même dans la chaîne.
J'ai utiliser le deuxième paramètre de cette fonction accepte, qui est le groupe dont j'ai besoin, et de le transformer en l'équivalent de l'utf-8 de la séquence, puis utilisez le haut - unescape
fonction de décoder la chaîne à sa propre forme.