Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Wyrażenia regularne w JS i tekst wielolinijkowy, Flaga /m nie działa dopóki nie usunę z tekstu znaków \n i \s
rtech.projekty.p...
post 28.06.2013, 07:56:03
Post #1





Grupa: Zarejestrowani
Postów: 14
Pomógł: 0
Dołączył: 24.06.2013

Ostrzeżenie: (0%)
-----


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;


Ten post edytował rtech.projekty.php 28.06.2013, 07:56:48
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 03:12