Witam.

Zastanawiam się, dlaczego w wyrażeniach regularnych w JS, mimo stosowania flagi /m, która pozwala na korzystanie
z tekstu zapisanego w wielu linijkach i tak musiałem "oczyścić" tekst ze znaków nowej linii i znaków spacji.

html: skopiowane źródło html strony
Regexp:
Kod
var re = /<tag>.*<\/tag>/m;


Regexp zwracał to czego szukałem
Kod
var result = html.match(re);

tylko i wyłącznie, gdy wcześniej oczyściłem tekst ze znaków \n i \s:
Kod
html = html.replace(/\n/g, ""); //Pozbywamy się znaków końca linii.
html = html.replace(/\s/g, "_coś_"); //Znaki białe zamieniamy na inne znaki.
html = html.replace(/_coś_/g, " "); //Ostatecznie znaki białe zamieniamy na spacje.


Czy ktoś wie dlaczego tak się dzieje ?

----------------------------------

Sam znalazłem rozwiązanie.
Zamiast flagi \m, która w tym przypadku się nie przyda
w wyrażeniu regularnym stosujemy notację:
Kod
[\s\S\]*

czyli regexp powinien wyglądać tak:
Kod
var re = /<tag>[\s\S]*<\/tag>/m;