Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JavaScript] Problem z wyrażeniem regularnym
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
pgrzelka
Witam

mam jakiś tam tekst html zapisany w zmiennej
Kod
tekst = "to jest tekst html <h1>naglowek</h1> tekst tekst <h1>tekst<br></h1> dalszy tekst"

chciałbym pobrać z takiego tekstu wszystkie h1 h2 h3
mam taki kod
Kod
var matches = tekst.match(/<h[^<]+>[^>]*[<br>]*<\/\h.>/g);


niestety nie interpretuje mi on <br> w <h1>

proszę o pomoc

podbijam, na prawdę nikt nie wie ?
wookieb
PHPQUERY
pgrzelka
@wookieb: dzięki ale mi chodzi o rozwiązanie w JavaScirpt, faktycznie zapomniałem napisać o tym w poście ale temat jest w dziale JavaScript i moje pytanie dotyczy tego języka,
wookieb
Ee tam. To moj glupota, że jak widze regexp to zawsze myslę, że chodzi o php.
getElementsByTagName
zegarek84
Cytat(pgrzelka @ 25.10.2010, 09:41:15 ) *
mam jakiś tam tekst html zapisany w zmiennej
Cytat(wookieb @ 25.10.2010, 11:06:43 ) *
Ee tam. To moj glupota, że jak widze regexp to zawsze myslę, że chodzi o php.
getElementsByTagName
w zmiennej a nie w drzewie DOM winksmiley.jpg

w nawiasach kwadratowych definiuje się zestaw znaków dozwolonych a nie grupuje się ciągu tekstowego winksmiley.jpg - więc Ty potrzebujesz coś w stylu:
/<h[^<]+>[^>]*(<br>)*<\/\h.>/g

a jeszcze lepiej:
/<h[^<]+>[^>]*(?:<br>)*<\/\h.>/g

a o ile tego br ma być 0 lub 1 to:
/<h[^<]+>[^>]*(?:<br>)?<\/\h.>/g

gdzie znak zapytania znaczy tyle co {0,1}...

poczytaj o grupowaniu wyrażeń regularnych + różnica między (wyrażenie) a (?:wyrażenie) to w pierwszym przypadku dopasowanie masz przechowywane w zmiennej/tablicy a w drugim przypadku nie...
flashdev
Cytat(zegarek84 @ 25.10.2010, 12:20:27 ) *
w zmiennej a nie w drzewie DOM winksmiley.jpg
[...]


Nie wiem, czy autorowi tematu przypadnie takie rozwiązanie do gustu, ale można tymczasowo taki string podpiąć do drzewa DOM, tylko po to żeby wygodnie odwołać się do jego elementów składowych.
wookieb
Cytat(zegarek84 @ 25.10.2010, 12:20:27 ) *
w zmiennej a nie w drzewie DOM winksmiley.jpg

Z DOM-a wyciągnie sobie wszystko, więc co bawić się wyrażeniami skoro jest do tego inne LEPSZE narzędze?
pgrzelka
@zegarek84: Twoje wyrażenia nie działają na moim przykładowym tekście,
Kod
... matki i żony Edypa.</p><h1>tresc<br> antygony</h1><p>rozpoczyna się w momencie ...


używam drzewka dom za pomocą jquery
Kod
$('div').find('h1,h2,h3')


dziękuje wszystkim za pomoc
zegarek84
Cytat(pgrzelka @ 25.10.2010, 13:51:43 ) *
@zegarek84: Twoje wyrażenia nie działają na moim przykładowym tekście
że niby jakie?? - nie prosiłeś o gotowca a pytałeś się gdzie jest problem - więc problem opisałem dosyć dokładnie... jeśli nie chcesz się uczyć to już nie mój problem - na zdania jakie wyżej podałeś pisałem gdzie problem i wystarczyło deczko pomyśleć by mieć uniwersalne rozwiązanie...

jeśli szukasz gotowców to tutaj uzyskasz tablicę array lub null z dopasowanych wyrażeń i nie wazne jakie zdanie - choć fakt sam zadko stosuję wyrażenia regularne nawet w php i wolę DOM...

odpal sobie to w konsoli lub dopisz otoczę js...

"... matki i żony Edypa.</p><H1>tresc<br> an\r\ntygony</h1><p>rozpoczyn<h2>a się w mo</H2>mencie ...".match(/<(h\d>)[\S\s]+?<\/\1/gi)
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.