Je prends l'entrée utilisateur (code JS) et je l'exécute (le traite) en temps réel pour afficher une sortie.
Parfois, le code a un espace de largeur nulle, c'est vraiment bizarre. je ne sais pas comment les utilisateurs saisissent cela. Exemple - "($".length === 3
J'ai besoin de pouvoir supprimer ce caractère de mon code dans JS. Comment dois-je procéder? ou peut-être existe-t-il une autre manière d'exécuter ce code JS afin que le navigateur ne prenne pas en compte les caractères d'espace de largeur nulle?
Unicode a les caractères de largeur nulle suivants:
Pour les supprimer d'une chaîne en JavaScript, vous pouvez utiliser une expression régulière simple:
var userInput = 'a\u200Bb\u200Cc\u200Dd\uFEFFe';
console.log(userInput.length); // 9
var result = userInput.replace(/[\u200B-\u200D\uFEFF]/g, '');
console.log(result.length); // 5
Notez qu'il existe de nombreux autres symboles qui peuvent ne pas être visibles. Certains caractères de contrôle ASCII , par exemple.
J'ai eu un problème avec certains caractères invisibles qui corrompaient mon JSON et provoquaient une exception de jeton ILLEGAL inattendue qui plantait mon site.
Voici ma solution en utilisant la variable RegExp:
var re = new RegExp("\u2028|\u2029");
var result = text.replace(re, '');
Plus d'informations sur Javascript et les espaces de largeur nulle, vous pouvez trouver ici: Espaces de largeur zéro
str.replace(/\u200B/g,'');
200B est l'hexadécimal de l'espace de largeur nulle 8203. remplacez-le par une chaîne vide pour le supprimer
[].filter.call( str, function( c ) {
return c.charCodeAt( 0 ) !== 8203;
} );
Filtrez chaque caractère pour supprimer le code de caractère 8203 (numéro unicode d'espace de largeur nulle).