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 récupéré, même s'il s'étend sur des caractères de nouvelle ligne. Je pensais que le drapeau «m» le faisait. Ne fait pas.
J'ai trouvé la réponse ici avant de poster. Depuis que je pensais connaître JavaScript (lire trois livres, travailler des heures) et qu'il n'y avait pas de solution existante chez SO, j'oserais poster quand même. jeter des pierres ici
La solution est donc:
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 un moyen moins cryptique?
Edit: c'est un double mais comme il est plus difficile à trouver que la mienne, je ne supprime pas.
Il propose [^]
un "point multiligne". Ce que je ne comprends toujours pas, c'est pourquoi [.\n]
ça ne marche pas. Je suppose que c'est l'une des tristes parties de JavaScript ..