var ss= "<pre>aaaa\nbbb\nccc</pre>ddd";
var arr= ss.match( /<pre.*?<\/pre>/gm );
alert(arr); // null
Vorrei che il blocco PRE venisse raccolto, anche se si estende su personaggi newline. Pensavo che la bandiera "m" lo facesse. Non.
Ho trovato la risposta qui prima di pubblicare. Dato che pensavo di conoscere JavaScript (leggi tre libri, orario di lavoro) e non c'era una soluzione esistente in SO, oserei pubblicare comunque. lanciare pietre qui
Quindi la soluzione è:
var ss= "<pre>aaaa\nbbb\nccc</pre>ddd";
var arr= ss.match( /<pre[\s\S]*?<\/pre>/gm );
alert(arr); // <pre>...</pre> :)
Qualcuno ha un modo meno enigmatico?
Modifica: questo è un duplicato ma poiché è più difficile da trovare del mio, non lo rimuovo.
Si propone [^]
come un "punto multilinea". Quello che ancora non capisco è perché [.\n]
non funziona. Immagino che questa sia una delle parti tristi di JavaScript ..