Witaj, Gościu O nas | Kontakt | Mapa
Wortal Forum PHPEdia.pl Planeta Kubek IRC Przetestuj się!

Zrozumieć obiekt RegExp w JavaScript

Gem, Set, Mecz

Obiekt String posiada również metodę match(), która może być uważana za bliskiego kuzyna metody search(). Jaka jest różnica? Jak już zapewne zauważyłeś, search() zwraca pozycję odnalezionego wyrażenia. Natomiast match() odnajduje wszystkie wyrażenia pasujące do wzorca i zwraca je w tablicy.

Trochę to zamotane, no nie? Może przykład coś wyjaśni:

<script language="JavaScript"> 
  
// łańcuch znaków
var str = "Mississippi"; 
  
// wzorzec do przeszukiwania
var pattern = /is./; 
  
// szukamy wystąpień wzorca
// umieszczamy wyniki w tablicy
var result = str.match(pattern); 
  
// wyświetlamy wyniki
for(i = 0; i < result.length; i++)  
{ 
 alert("Match #" + (i+1) + ": " + result[i]); 
} 
  
</script> 

Uruchom ten skrypt w przeglądarce, a otrzymasz alert o następującej treści (będzie to pierwszy odnaleziony tekst pasujący do zadanego wzorca):

Match #1: iss

W powyższym przykładzie zdefiniowałem następujące wyrażenie regularne: "is.". Wzorzec ten pasuje do słowa "is", po którym występuje dowolny inny znak (tak właśnie działa metaznak "." [kropka] - zastępuje on dowolny znak w wyrażeniu). Jeśli patrzysz na bazowy tekst do przeszukania, z łatwością odnajdujesz tu dwa wystąpienia znaków, pasujących do wzorca. Jednakże skrypt zwraca tylko pierwsze z nich.

Dlaczego?

Odpowiedź jest prosta - "zapomniałem" dodać modyfikator "g" (od "global") do wyrażenia. Teraz przeszukiwanie kończy się po pierwszym napotkaniu tekstu pasującego do wzorca. Przyglądnijmy się następnemu przykładowi, który zawiera małą poprawkę:

<script language="JavaScript"> 
  
// definicja łańcucha tekstowego
var str = "Mississippi"; 
  
// definicja wzorca do przeszukiwania
// dodanie modyfikatora
var pattern = /is./g; 
  
// szukamy wystąpień
// wyniki umieszczamy w tablicy
var result = str.match(pattern); 
  
// wyświetlanie wyników
for(i = 0; i < result.length; i++)  
{ 
 alert("Match #" + (i+1) + ": " + result[i]); 
} 
  
</script>

Teraz, po uruchomieniu tego przykładu w przeglądarce, powinieneś otrzymać dwa komunikaty zawierające oba teksty pasujące do wzorca. Modyfikator "g" sprawia właśnie, że poszukiwanie nie kończy się po znalezieniu pierwszego tekstu spełniającego wymagania wzorca, ale każdy kolejny taki łańcuch tekstowy jest dodawany na koniec tablicy wynikowej, zwracanej przez tą metodę. W dalszej części tutoriala poznamy jeszcze kila innych, przydatnych modyfikatorów.

Informacje na podobny temat:
Wasze opinie
Wszystkie opinie użytkowników: (1)
zamiana nietypowych znaków
Niedziela 01 Kwiecień 2007 11:46:19 am - Fixer <piskomd_at_poczta.onet.pl>

a jak zamienić w tekście zestaw znaków typu :) lub :/ na <img src"".....?

Mentax.pl    NQ.pl- serwery z dodatkiem świętego spokoju...   
O nas | Kontakt | Mapa serwisu
Copyright (c) 2003-2024 php.pl    Wszystkie prawa zastrzeżone    Powered by eZ publish Content Management System eZ publish Content Management System