Maison  >  Article  >  interface Web  >  Comment faire correspondre les instances Regex en dehors des guillemets en JavaScript : un guide complet

Comment faire correspondre les instances Regex en dehors des guillemets en JavaScript : un guide complet

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-10-25 07:04:29830parcourir

How to Match Regex Instances Outside Quotes in JavaScript: A Comprehensive Guide

Correspondance des instances non entourées de guillemets

Dans une question précédente, il a été suggéré de faire correspondre toutes les occurrences d'une expression régulière tout en excluant le texte entre guillemets n'est pas réalisable. Cependant, cette limitation peut être surmontée à l'aide d'une regex complexe mais efficace.

La clé de cette regex est d'observer qu'une sous-chaîne est en dehors des guillemets si un nombre pair de guillemets la précède. Cela peut être représenté par l'assertion d'anticipation suivante :

(?=([^"]*"[^"]*")*[^"]*$)

Cette assertion garantit que le texte précédent contient un nombre pair de guillemets suivis de la sous-chaîne actuelle.

Pour exclure les guillemets échappés , nous devons également prendre en compte les barres obliques inverses. L'expression régulière devient légèrement plus complexe :

\+(?=([^"\]*(\.|"([^"\]*\.)*[^"\]*"))*[^"]*$)

Cette expression régulière avance d'abord au-delà de tous les caractères autres que les guillemets (S). Lorsqu'il rencontre une barre oblique inverse ou une citation, soit il ignore le caractère suivant (s'il s'agit d'une barre oblique inverse), soit il passe à la citation suivante non échappée.

Bien que cette expression régulière soit quelque peu complexe, elle correspond effectivement à toutes les instances. de l'expression régulière non entourée de guillemets, permettant d'obtenir le résultat souhaité dans les méthodes split() et replace() de JavaScript.

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