Maison >interface Web >js tutoriel >Pourquoi JavaScript Regex ne parvient-il pas à extraire le texte multiligne avec l'indicateur « m » ?
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>
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]
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>
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>
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!