Échapper aux barres obliques inverses dans les chaînes
En JavaScript, le caractère barre oblique inverse a une signification à la fois dans les chaînes et dans les expressions régulières. Cela crée des difficultés lorsque l'on tente d'inclure une barre oblique inverse autonome dans le texte. Pour y parvenir, il est nécessaire d'échapper à la barre oblique inverse en utilisant deux barres obliques consécutives ().
Chaînes
Lors de la création de chaînes, la première barre oblique inverse agit comme un caractère d'échappement, tandis que la seconde représente la barre oblique inverse réelle. Par exemple :
const str = "\"\I have one backslash\""; console.log(str); // \I have one backslash
Expressions régulières
De même, dans les expressions régulières, deux barres obliques inverses consécutives sont requises pour correspondre à une seule barre oblique inverse. En effet, la première barre oblique inverse sert de caractère d'échappement dans le littéral de l'expression régulière. Par exemple :
const regex = /\/; // Match a single backslash
Utiliser des chaînes pour créer des expressions régulières
Lors de l'utilisation de chaînes pour construire des expressions régulières, il est important de considérer deux niveaux d'échappement. Tout d'abord, les barres obliques inverses doivent être échappées dans la chaîne, puis à nouveau dans l'expression régulière créée. Par conséquent, quatre barres obliques inverses sont nécessaires au total.
const regex = new RegExp("\\"); // Matches a single backslash using a string
Mises à jour ES2015 et ES2018
Dans les versions récentes de JavaScript, les littéraux de modèles fournissent une méthode alternative pour inclure des barres obliques inverses dans les chaînes. . La fonction String.raw peut également être utilisée pour y parvenir.
const str = String.raw`\apple`; // Valid ES2015 syntax
Il convient de noter que les littéraux de modèle doivent être utilisés avec prudence, car ils ne prennent pas en charge les substitutions contenant des caractères ${. L'inclusion de ${ dans un littéral de modèle entraînera l'inclusion de la barre oblique inverse dans la chaîne, similaire à l'exemple ci-dessous :
const foo = "bar"; const str = String.raw`\apple${foo}`; // Results in \applebar
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!