Maison > interface Web > js tutoriel > le corps du texte

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

Patricia Arquette
Libérer: 2024-10-28 20:02:02
original
319 Les gens l'ont consulté

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>
Copier après la connexion

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>
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!