var ss= "<pre>aaaa\nbbb\nccc</pre>ddd";
var arr= ss.match( /<pre.*?<\/pre>/gm );
alert(arr); // null
Chciałbym, aby blok PRE został pobrany, nawet jeśli obejmuje on znaki nowego wiersza. Myślałem, że flaga „m” to robi. Nie.
Znalazłem odpowiedź tutaj przed opublikowaniem. Kiedy pomyślałem, że znam JavaScript (przeczytałem trzy książki, przepracowałem godziny) i nie było w SO żadnego rozwiązania, odważę się napisać. rzucaj kamieniami tutaj
Tak więc rozwiązaniem jest:
var ss= "<pre>aaaa\nbbb\nccc</pre>ddd";
var arr= ss.match( /<pre[\s\S]*?<\/pre>/gm );
alert(arr); // <pre>...</pre> :)
Czy ktoś ma mniej tajemniczy sposób?
Edycja: to jest duplikatem, ale ponieważ jest to trudniejsze do znalezienia niż moje, ja nie usuwać.
Proponuje się [^]
jako „kropkę wielowierszową”. Nadal nie rozumiem, dlaczego [.\n]
nie działa. Domyślam się, że jest to jedna ze smutnych części JavaScript.