Est-ce que quelqu'un pourrait donner une liste complète des caractères spéciaux qui doivent être échappés?
Je crains de ne pas tous les connaître.
Est-ce que quelqu'un pourrait donner une liste complète des caractères spéciaux qui doivent être échappés?
Je crains de ne pas tous les connaître.
Le problème :
const character = '+'
new RegExp(character, 'gi') // erreur
Solutions intelligentes :
// avec babel-polyfill
// Avertissement : sera retiré de babel-polyfill v7
const character = '+'
const escapeCharacter = RegExp.escape(character)
new RegExp(escapeCharacter, 'gi') // /\+/gi
// ES5
const character = '+'
const escapeCharacter = escapeRegExp(character)
new RegExp(escapeCharacter, 'gi') // /\+/gi
function escapeRegExp(string){
return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&')
}
Je cherchais cette liste en ce qui concerne le paramètre "no-useless-escape" d'ESLint pour les expressions régulières. Et j'ai constaté que certains de ces caractères mentionnés n'ont pas besoin d'être échappés pour une expression régulière en JS. La liste plus longue dans l'autre réponse ici concerne PHP, qui nécessite en effet que les caractères supplémentaires soient échappés.
Dans cette problème github pour ESLint, à peu près à mi-chemin, l'utilisateur not-an-aardvark
explique pourquoi le caractère mentionné dans le problème devrait peut-être être échappé.
En javascript, un caractère qui DOIT être échappé est un caractère de syntaxe, ou un de ceux-ci :
^ $ \ . * + ? ( ) [ ] { } |
La réponse au problème github que j'ai mentionné ci-dessus inclut une explication sur les "semantiques de l'Annexe B" (dont je ne sais pas grand chose) qui permet à 4 des caractères mentionnés ci-dessus d'être NON échappés : ) ] { }
.
Autre chose à noter est qu'échapper un caractère qui ne nécessite pas d'échappement ne fera aucun mal (sauf peut-être si vous essayez d'échapper le caractère d'échappement). Donc, ma règle personnelle est : "En cas de doute, échapper".
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.
12 votes
Cette liste était étonnamment difficile à trouver.