Maison > interface Web > js tutoriel > Pourquoi JavaScript Regex ne parvient-il pas à extraire le texte multiligne avec l'indicateur « m » ?

Pourquoi JavaScript Regex ne parvient-il pas à extraire le texte multiligne avec l'indicateur « m » ?

Mary-Kate Olsen
Libérer: 2024-11-10 01:36:02
original
1044 Les gens l'ont consulté

Why Does JavaScript Regex Fail to Extract Multiline Text with the 'm' Flag?

Dilemme Regex : extraction de texte multiligne

En tentant d'extraire du texte du HTML à l'aide d'une regex JavaScript, un développeur a rencontré un obstacle inattendu : le l'indicateur multiligne (m) semblait inefficace pour capturer du texte multiligne.

Le modèle d'expression régulière fourni visait à extraire le texte inclus dans une balise h1 :

var pattern = /<div>
Copier après la connexion

Cependant, lorsque la chaîne HTML contenait des nouvelles lignes (n), le résultat était systématiquement vide. La suppression des nouvelles lignes a résolu le problème, que l'indicateur m soit présent ou non.

La solution : le modificateur Dotall

Le coupable résidait dans l'absence de modificateur dotall dans JavaScript. Par défaut, le point (.) correspond à n'importe quel caractère sauf la nouvelle ligne. Pour surmonter cette limitation, une solution de contournement impliquant les classes de caractères et leur négation peut être utilisée :

[\s\S]
Copier après la connexion

Cette classe de caractères correspond à n'importe quel caractère, y compris les nouvelles lignes et autres espaces. Incorporé dans l'expression régulière, il donne :

/<div>
Copier après la connexion
Copier après la connexion

Solution moderne avec l'indicateur DotAll

Depuis ES2018, JavaScript prend en charge l'indicateur s (dotAll). Cet indicateur demande explicitement au moteur d'expression régulière de permettre au point de correspondre aux nouvelles lignes, éliminant ainsi le besoin de solutions de contournement :

/<div>
Copier après la connexion
Copier après la connexion

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