![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 29 Pomógł: 0 Dołączył: 6.06.2009 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
Pewnie niektórzy pomyślą sobie, że upierdliwy jestem i pokłóciłem się z Google. Otóż, może pierwsze, ale nie drugie. Póki co nie znalazłem odpowiedzi. A pytanie, jak w temacie. W PHP korzystam z podpowiedzi, jakiej udzielił mi już ktoś wcześniej na tym forum, czyli #ciag1(.*?)ciag2#, przy czym jako zwrot mogę dostać to co w nawiasie lub TRUE i cały ciąg spomiędzy #. Teraz w JS/Jquery potrzebuję dokładnie tylko i wyłącznie tego co byłoby pomiędzy ciag1 i ciag2. Póki co chyba najbliższe rozwiązaniu co wymyśliłem to: Kod var ciag = "abcdefghij"; alert(ciag.match("abc(.*?)hij"); Ale oczywiście mi nie działa;/ Tzn. działa, ale nie do końca, ponieważ zwraca: Kod abcdefghij,defg A powinno tylko to, co jest po przecinku. Czy może ktoś pomóc? Ten post edytował shimano 23.04.2010, 19:44:00 |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 2 350 Pomógł: 512 Dołączył: 4.01.2009 Skąd: Wrocław / Świdnica Ostrzeżenie: (0%) ![]() ![]() |
Najprościej:
Kod <script type="text/javascript">
var ciag = "abcdefghij"; alert(ciag.match("abc(.*?)hij")[1]); </script> -------------------- |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 29 Pomógł: 0 Dołączył: 6.06.2009 Ostrzeżenie: (0%) ![]() ![]() |
Genialne.
Tylko zastanawiam się na ile to jest poprawne składniowo? Można w JS tak dodawac [] po funkcji? P.S. Jeszcze tylko takie szybkie pytanie - Jak pobrać ilość znalezionych ciągów? Ten post edytował shimano 23.04.2010, 20:22:13 |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 2 350 Pomógł: 512 Dołączył: 4.01.2009 Skąd: Wrocław / Świdnica Ostrzeżenie: (0%) ![]() ![]() |
Chodzi o to, że w wyniku dostałeś tablicę składającą się z 2 elementów. Jak wiadomo numeracja odbywa się od 0(stąd jedynka), natomiast skoro zwraca Ci tablicę to możesz w każdej chwili pobrać jej 2 element poprzez dodanie [1];
To tak jak być zrobił tak: Kod function x(){ return [0,1]; } //zwraca tablicę
alert( x()[1] );//zwraca 2 element z tablicy, którą zwróciła funkcja x, czyli 1 -------------------- |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 29 Pomógł: 0 Dołączył: 6.06.2009 Ostrzeżenie: (0%) ![]() ![]() |
Chodzi o to, że w wyniku dostałeś tablicę składającą się z 2 elementów. Jak wiadomo numeracja odbywa się od 0(stąd jedynka), natomiast skoro zwraca Ci tablicę to możesz w każdej chwili pobrać jej 2 element poprzez dodanie [1]; To tak jak być zrobił tak: Kod function x(){ return [0,1]; } //zwraca tablicę alert( x()[1] );//zwraca 2 element z tablicy, którą zwróciła funkcja x, czyli 1 Już rozumiem. Nigdy nie domyśliłbym się, że wynik mam w tablicy ;/ To w takim razie, pytanie - dlaczego nie działa mi to (te wyrażenie regularne) w postaci zwielokrotnionej? Np. Cytat var ciag = "abcdefghijabcdefghijabcdefghijabcdefghijabcdefghij"; var znalezione = ciag.match("abc(.*?)hij"); alert(znalezione.length); // tutaj wyswietli tylko 2, zamiast 10;/ dlaczego? |
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 2 350 Pomógł: 512 Dołączył: 4.01.2009 Skąd: Wrocław / Świdnica Ostrzeżenie: (0%) ![]() ![]() |
Poczytaj o wyrażeniach regularnych - szczególnie o "fladze g" - polecam: http://www.egrafik.pl/kurs-regex-wyrazenia-regularne/
-------------------- |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 29 Pomógł: 0 Dołączył: 6.06.2009 Ostrzeżenie: (0%) ![]() ![]() |
Poczytaj o wyrażeniach regularnych - szczególnie o "fladze g" - polecam: http://www.egrafik.pl/kurs-regex-wyrazenia-regularne/ Znam stronę. Jednakże "abc(.*?)hij/g", ani "abc/g(.*?)hij/g" mi "nie łapie". Naprawdę, wiele razy brałem się za regexy i chyba tak jak pewne dziedziny matematyki - nigdy nie pojmę ;/ Update: CHYBA znalazłem rozwiązanie. Moim błędem było zamieszczenie wyrażenia w cudzysłowiu. Po zlikwidowaniu go chyba działa poprawnie. Kod var znalezione = ciag.match(/abc(.*?)hij/g); Ten post edytował shimano 23.04.2010, 21:05:07 |
|
|
![]()
Post
#8
|
|
![]() Grupa: Zarejestrowani Postów: 2 350 Pomógł: 512 Dołączył: 4.01.2009 Skąd: Wrocław / Świdnica Ostrzeżenie: (0%) ![]() ![]() |
Nie działa poprawnie, bo zwraca nie to co trzeba... - bardzo dawno się bawiłem w wyrażenia, dlatego pewnie to co jest poniżej da się zrobić lepiej, ale już mi się nie chce myśleć:
Kod var ciag = "abcdefghijabcdefghijabcdefghijabcdefghijabcdefghij";
var test = ciag.match( /abc(.*?)hij/g ); var wynik = []; for(var i=0; j=test[i++];){ wynik[wynik.length || 0] = j.match( /abc(.*?)hij/)[1]; } alert(wynik); -------------------- |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 19.07.2025 - 20:40 |