Besoin d'une fonction pour supprimer un ensemble de caractères illégaux en javascript: |&;$%@"<>()+,
Il s'agit d'un problème classique à résoudre avec des expressions rationnelles, ce qui signifie maintenant j'ai 2 problèmes .
Voici ce que j'ai jusqu'à présent:
var cleanString = dirtyString.replace(/\|&;\$%@"<>\(\)\+,/g, "");
J'échappe aux caractères spéciaux regex avec une barre oblique inverse, mais j'ai du mal à comprendre ce qui se passe.
Si j'essaie d'isoler des littéraux simples la plupart d'entre eux semblent fonctionner, mais une fois que je les ai regroupés dans la même expression régulière selon l'ordre de remplacement cassé.
c'est-à-dire que cela ne fonctionnera pas -> dirtyString.replace(/\|<>/g, ""):
Aide appréciée!
Ce dont vous avez besoin sont classes de caractères . En cela, vous n'avez qu'à vous soucier de la ]
, \
et -
caractères (et ^
si vous le placez juste après le début de la classe de caractères "[
").
Syntaxe: [
caractères ]
où caractères est une liste de caractères.
Exemple:
var cleanString = dirtyString.replace(/[|&;$%@"<>()+,]/g, "");
J'ai tendance à le regarder dans la perspective inverse, ce qui peut être ce que vous vouliez:
Quels caractères dois-je autoriser?
C'est parce qu'il pourrait y avoir beaucoup de caractères qui se transforment en une chaîne qui fait exploser des trucs auxquels vous ne vous attendez pas.
Par exemple, celui-ci ne permet que les lettres et les chiffres supprimant les groupes de caractères invalides en les remplaçant par un hypen:
"This¢£«±Ÿ÷could&*()\/<>be!@#$%^bad".replace(/([^a-z0-9]+)/gi, '-');
//Result: "This-could-be-bad"
Vous devez les envelopper tous dans une classe de personnage. La version actuelle signifie remplacer cette séquence de caractères par une chaîne vide. Lorsqu'il est placé entre crochets, cela signifie remplacer tout de ces caractères par une chaîne vide.
var cleanString = dirtyString.replace(/[\|&;\$%@"<>\(\)\+,]/g, "");
Mettez-les entre parenthèses []
:
var cleanString = dirtyString.replace(/[\|&;\$%@"<>\(\)\+,]/g, "");