Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [JavaScript]wyrażenia regulane
query
post
Post #1





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 3.09.2014

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


Witam

Mam fragment
  1. "jakis tekst my_function('arg1,arg2') jakis tekst"

Chcę pobrać wszystkie argumenty funkcji 'my_function' podając tylko jeden argument tej funkcji.


Niestety poniższy kod nie działa a powinien zwrócić wartość 'arg1,arg2'
  1. var string = "jakis tekst my_function('arg1,arg2') jakis tekst";
  2. var regex = /my_function\(\'(arg2)\'\)/;
  3. console.log( string.match(regex));


Ten post edytował query 3.09.2014, 08:59:56
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 5)
golabow
post
Post #2





Grupa: Zarejestrowani
Postów: 53
Pomógł: 17
Dołączył: 4.07.2014

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


Może to Ci pomoże:

  1. <script>
  2. var string = "jakis tekst my_function('arg1,arg2,argument23') jakis tekst";
  3. var regex = /my_function\((.*?)\)/;
  4. console.log( string.match(regex)[1]);
  5. </script>


Ten post edytował golabow 3.09.2014, 10:24:51
Go to the top of the page
+Quote Post
query
post
Post #3





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 3.09.2014

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


Cytat(golabow @ 3.09.2014, 11:21:14 ) *
Może to Ci pomoże:

  1. <script>
  2. var string = "jakis tekst my_function('arg1,arg2,argument23') jakis tekst";
  3. var regex = /my_function\((.*?)\)/;
  4. console.log( string.match(regex)[1]);
  5. </script>



Dzięki to działa dobrze. Problem w tym ze ja tych funkcji mam wiele z różnym argumentami.
Jak z poniższego przykładu pobrać wartość 'arg100,arg200' (IMG:style_emoticons/default/questionmark.gif)

  1. <script>
  2. var string = "jakis tekst my_function('arg1,arg2,argument23') jakis tekst my_function('arg100,arg200')";
  3. var regex = /my_function\((.*?)\)/;
  4. console.log( string.match(regex)[1]);
  5. </script>

Go to the top of the page
+Quote Post
golabow
post
Post #4





Grupa: Zarejestrowani
Postów: 53
Pomógł: 17
Dołączył: 4.07.2014

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


Napisałem taki skrypt wydaje się dawać dobre wyniki:
  1. <script>
  2. var string = "jakis tekst my_function('arg1,arg2,argument23') jakis tekst my_function('arg100,arg200')";
  3. var regex = /my_function\((.*?)\)/g;
  4. var funArray = string.match(regex);
  5. var wynik = [];
  6. for( var i = 0; i < funArray.length; i++ )
  7. {
  8. wynik[i] = funArray[i].match(/my_function\((.*?)\)/);
  9. }
  10. // wypisuje wynik
  11. for ( var i = 0; i < wynik.length; i++ )
  12. {
  13. console.log( wynik[i][1] );
  14. }
  15. </script>


Najpierw globalnie wyszukuje wszystkie dopasowania a następnie wyciągam argumenty.
Go to the top of the page
+Quote Post
query
post
Post #5





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 3.09.2014

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


Cytat(golabow @ 3.09.2014, 12:04:33 ) *
Napisałem taki skrypt wydaje się dawać dobre wyniki:
  1. <script>
  2. var string = "jakis tekst my_function('arg1,arg2,argument23') jakis tekst my_function('arg100,arg200')";
  3. var regex = /my_function\((.*?)\)/g;
  4. var funArray = string.match(regex);
  5. var wynik = [];
  6. for( var i = 0; i < funArray.length; i++ )
  7. {
  8. wynik[i] = funArray[i].match(/my_function\((.*?)\)/);
  9. }
  10. // wypisuje wynik
  11. for ( var i = 0; i < wynik.length; i++ )
  12. {
  13. console.log( wynik[i][1] );
  14. }
  15. </script>


Najpierw globalnie wyszukuje wszystkie dopasowania a następnie wyciągam argumenty.




No działa jak trzeba.
Ja próbowałem też globalnie ( użycie /g) i później wycinałem sobie argumenty za pomocą substring ale to wygląda lepiej.

p.s.
Widzę że trzeba użyć dwa razy wyrażenia regularnego dlatego wczoraj w nocy poległem na tym
bo myślałem że da radę wyciągnąć to jednym zapisem (IMG:style_emoticons/default/smile.gif)
Nie da się jednym zapisem ? Pytam z ciekawości bo wyrażenia regularne to dla mnie nowość.
Czy w php np dałoby się to zapisać jednym zapisem ? W jQuery jest to ograniczone czy nie ?

Ten post edytował query 3.09.2014, 11:25:00
Go to the top of the page
+Quote Post
zegarek84
post
Post #6





Grupa: Zarejestrowani
Postów: 1 332
Pomógł: 294
Dołączył: 12.10.2008
Skąd: Olkusz

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


Cytat(query @ 3.09.2014, 12:22:39 ) *
Nie da się jednym zapisem ? Pytam z ciekawości bo wyrażenia regularne to dla mnie nowość...

wyrażenia wyrażeniami, bardziej chodzi o funkcję...
luknij na tą odpowiedź a dokładniej na pętlę while a jak nie zrozumiesz żeby było szybciej to na podziękowanie pod postem osoby pytającej o funkcję w JS podobną do tej z PHP preg_match_all:
http://stackoverflow.com/questions/520611/...s/520845#520845
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 5.10.2025 - 20:20