var ss= "<pre>aaaa\nbbb\nccc</pre>ddd";
var arr= ss.match( /<pre.*?<\/pre>/gm );
alert(arr); // null
Eu gostaria que o bloco PRE fosse escolhido, mesmo que se estendesse por caracteres de nova linha. Eu pensei que a bandeira 'm' faz isso. Não.
Encontre a resposta aqui antes de postar. Desde que achei que sabia JavaScript (li três livros, trabalhei horas) e não havia uma solução existente na SO, ousarei postar de qualquer maneira. jogue pedras aqui
Então a solução é:
var ss= "<pre>aaaa\nbbb\nccc</pre>ddd";
var arr= ss.match( /<pre[\s\S]*?<\/pre>/gm );
alert(arr); // <pre>...</pre> :)
Alguém tem uma maneira menos enigmática?
Edit: esta é uma duplicata, mas como é mais difícil de encontrar que a minha, não a removo.
Ele propõe [^]
como um "ponto multilinha". O que ainda não entendo é por [.\n]
que não funciona. Acho que essa é uma das partes tristes do JavaScript.