Maison >interface Web >js tutoriel >Comment gérer la correspondance Regex multiligne en JavaScript ?

Comment gérer la correspondance Regex multiligne en JavaScript ?

Linda Hamilton
Linda Hamiltonoriginal
2024-10-28 20:48:02877parcourir

 How to Handle Multi-Line Regex Matching in JavaScript?

Correspondance d'expressions régulières multilignes avec JavaScript

Lors de la correspondance de chaînes qui s'étendent sur plusieurs lignes, l'indicateur /m de JavaScript est connu pour être inadéquat. Pour remédier à cette limitation, une approche plus robuste est nécessaire.

La solution

La solution consiste à remplacer la valeur par défaut. (point), qui correspond à n’importe quel caractère, avec [sS] à la place. Voici un exemple :

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">... "

Cette expression régulière utilise le métacaractère [sS], qui correspond à n'importe quel caractère, y compris les espaces et les caractères de nouvelle ligne. En conséquence, l'expression régulière peut faire correspondre les chaînes quels que soient leurs sauts de ligne.

Alternatives et considérations en matière de performances

Bien que [sS] soit une solution fiable, il existe des approches alternatives :

  • [^]` (obsolète) : Correspond à tout caractère autre qu'un saut de ligne.
  • (.|r|n) et (.| [rn]) : Ces deux modèles peuvent également correspondre à des chaînes multilignes, mais ils sont nettement plus lents selon les tests de référence.

Bonnes pratiques

Pour optimiser les performances et évitez toute gourmandise inutile, tenez compte des bonnes pratiques suivantes :

  • Utiliser *? ou ? quantificateurs au lieu de * ou pour limiter la correspondance au minimum requis.
  • Évitez d'utiliser des quantificateurs possessifs comme 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