var ss= "<pre>aaaa\nbbb\nccc</pre>ddd";
var arr= ss.match( /<pre.*?<\/pre>/gm );
alert(arr); // null
Me gustaría que el bloque PRE se recupere, aunque se extienda sobre los caracteres de nueva línea. Pensé que la bandera 'm' lo hace. No.
Encontré la respuesta aquí antes de publicar. Como pensé que conocía JavaScript (leí tres libros, trabajé horas) y no había una solución existente en SO, me atreveré a publicar de todos modos. tirar piedras aquí
Entonces la solución es:
var ss= "<pre>aaaa\nbbb\nccc</pre>ddd";
var arr= ss.match( /<pre[\s\S]*?<\/pre>/gm );
alert(arr); // <pre>...</pre> :)
¿Alguien tiene una forma menos críptica?
Editar: este es un duplicado, pero como es más difícil de encontrar que el mío, no lo elimino.
Se propone [^]
como un "punto multilínea". Lo que aún no entiendo es por qué [.\n]
no funciona. Supongo que esta es una de las partes tristes de JavaScript.