Maison  >  Article  >  interface Web  >  Comment faire correspondre le contenu multiligne avec les expressions régulières JavaScript ?

Comment faire correspondre le contenu multiligne avec les expressions régulières JavaScript ?

Patricia Arquette
Patricia Arquetteoriginal
2024-10-28 20:02:02320parcourir

How to Match Multiline Content with JavaScript Regular Expressions?

Surmonter les limites des expressions régulières JavaScript pour les correspondances multilignes

Lorsque vous travaillez avec des expressions régulières JavaScript, il devient crucial de comprendre comment faire correspondre un contenu qui s'étend sur plusieurs lignes. Considérez l'extrait de code suivant tentant d'extraire un bloc PRE contenant des nouvelles lignes :

<code class="js">var ss = "<pre class="brush:php;toolbar:false">aaaa\nbbb\nccc
ddd"; var arr = ss.match(//gm); alert(arr); // null</code>

Le résultat attendu est de capturer l'intégralité du bloc PRE, mais le résultat est une alerte nulle. Pour remédier à cela, nous approfondissons les subtilités de la correspondance multiligne.

Le Gambit '.|[rn]'

Une première approche consiste à remplacer le . caractère générique avec une expression qui correspond à n’importe quel caractère ou saut de ligne : (.|[rn]). Cependant, cela s'avère inefficace.

La Révélation : [sS]

La clé du succès réside dans l'utilisation de [sS] au lieu de . pour la correspondance multiligne. Cette classe de caractères englobe à la fois les caractères espaces et non-espaces, résolvant efficacement le problème.

<code class="js">var ss = "<pre class="brush:php;toolbar:false">aaaa\nbbb\nccc
ddd"; var arr = ss.match(//gm); alert(arr); // <pre class="brush:php;toolbar:false">...<\/pre></code>

Les subtilités de la cupidité : ' ?' vs ''

Une autre considération concerne le quantificateur utilisé. Bien que puisse sembler être le choix évident, il introduit une gourmandise inutile. '?' ou ' ?' garantit que la correspondance trouve la première occurrence au lieu de la plus longue possible.

Une note sur [^]

Alors que [^] peut également servir de point multiligne , il est obsolète selon un commentaire dans un autre article. Par conséquent, il est préférable de s'en tenir à [sS].

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