var ss= "<pre>aaaa\nbbb\nccc</pre>ddd";
var arr= ss.match( /<pre.*?<\/pre>/gm );
alert(arr); // null
Je voudrais que le bloc PRE soit repris, même s'il s'étend sur plusieurs caractères de saut de ligne. Je pensais que le drapeau 'm' le faisait. Ce n'est pas le cas.
J'ai trouvé la réponse aquí avant de poster. Puisque je pensais connaître JavaScript (j'ai lu trois livres, travaillé des heures) et qu'il n'y avait pas de solution existante chez SO, je vais oser poster quand même. jeter des pierres ici
La solution est donc la suivante :
var ss= "<pre>aaaa\nbbb\nccc</pre>ddd";
var arr= ss.match( /<pre[\s\S]*?<\/pre>/gm );
alert(arr); // <pre>...</pre> :)
Quelqu'un a-t-il une façon moins cryptique de le faire ?
Edit : ce est un doublon mais comme il est plus difficile à trouver que le mien, je ne le supprime pas.
Elle propose [^]
comme un "point multiligne". Ce que je ne comprends toujours pas, c'est pourquoi [.\n]
ne fonctionne pas. Je suppose que c'est l'une des parties tristes de JavaScript
36 votes
Une regex moins cryptique ? Impossible, par nature.
0 votes
Au fait, vous devriez lire : "Parsing Html : La méthode Cthulhu" codinghorror.com/blog/archives/001311.html
2 votes
Le lien a changé par rapport au commentaire précédent : blog.codinghorror.com/parsing-html-the-cthulhu-way (environ 5 ans plus tard)