Maison >interface Web >js tutoriel >Pourquoi mon expression régulière JavaScript échoue-t-elle lors de l'utilisation de barres obliques inverses ?

Pourquoi mon expression régulière JavaScript échoue-t-elle lors de l'utilisation de barres obliques inverses ?

Barbara Streisand
Barbara Streisandoriginal
2024-12-04 02:46:091227parcourir

Why Does My JavaScript Regex Fail When Using Backslashes?

Les barres obliques inverses dans les expressions régulières JavaScript : percer le mystère

Dans les tentatives de concaténer une liste d'arguments dans un chemin valide, une curieuse fonction JavaScript , « concatPath », a rencontré un comportement inattendu. Alors que l'expression régulière qui l'accompagnait semblait initialement correcte sur regexpal.com, la fonction a mal fonctionné et Chrome a généré une erreur de syntaxe.

Précédent d'expression régulière : évasion des barres obliques inverses

En normal expressions, les barres obliques inverses revêtent une signification particulière. Ils nous permettent de représenter des caractères qui autrement seraient interprétés à tort comme des métacaractères. Dans le cas des barres obliques inverses, elles doivent elles-mêmes être échappées par une autre barre oblique inverse pour les identifier comme caractères littéraux. Par exemple, pour faire correspondre une barre oblique inverse littérale, il faut utiliser l'expression "\".

Le problème : les barres obliques inverses ne correspondent pas

L'expression régulière d'origine, "()$ |^()", a tenté de faire correspondre les barres obliques inverses ou les barres obliques de début et de fin. Cependant, il n'a pas tenu compte de la présence de barres obliques inverses dans la chaîne littérale où l'expression régulière a été définie. Cela a entraîné une expression régulière invalide qui ne correspondait pas aux caractères prévus.

Le correctif :

Pour résoudre le problème, il faut placer l'expression régulière dans un littéral (/.../) au lieu d'une chaîne littérale ('...' ou "..."). Les littéraux d'expression régulière fournissent une démarcation explicite entre l'expression régulière et le contexte environnant, évitant ainsi toute ambiguïté dans l'interprétation.

Expression régulière révisée :

L'expression régulière modifiée, "/(|/)$|^(|/)/", utilise l'échappement approprié. Chaque barre oblique inverse est précédée d'une autre barre oblique inverse pour signifier son interprétation littérale. De plus, pour faire correspondre les barres obliques inverses ou les barres obliques, une classe de caractères ([/]) pourrait être utilisée, simplifiant davantage l'expression.

Conclusion :

En comprenant le En utilisant correctement les barres obliques inverses dans les expressions régulières, vous pouvez créer un code robuste qui correspond avec précision à vos modèles souhaités. La syntaxe correcte pour faire correspondre les barres obliques inverses dans un littéral d'expression régulière JavaScript est "//" ou "/[/]/".

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn