[ Pobierz całość w formacie PDF ]
Å‚Ä…cznie jeden znak odst¹pu w caÅ‚ym, dÅ‚ugim Å‚aÅ„cuchu znaków. Jednak można naka-
zać, aby wyrażenie regularne operowało globalnie za pomocą podanego wzorca do
przeszukania całego łańcucha znaków. W tym celu, do wyrażenia regularnego należy
dodać modyfikator :
Gdy wartość zostanie przekazana jako argument wywołania metody wy-
korzystujÄ…cej wyrażenia regularne (opisanej w dalszej cz¹Å›ci rozdziaÅ‚u), zastÄ…pione zo-
staną wszystkie odnalezione fragmenty przeszukiwanego łańcucha, a nie tylko pierwszy
z nich. Należy zwrócić uwag¹, że modyfikator umieszczany jest za drugim znakiem
ukośnika, kończącym wyrażenie regularne.
W wyrażeniach regularnych podobnie jak w wielu innych operacjach na łańcuchach
znaków wykonywanych w j¹zyku JavaScript uwzgl¹dniana jest wielkość liter. Za-
chowanie to można zmienić przez zastosowanie odpowiedniego modyfikatora. A zatem,
poniższe wyrażenie:
odnajdzie zarówno słowo web , jak i Web , oraz słowo to zapisane za pomocą do-
wolnej innej kombinacji dużych i małych liter. Oba modyfikatory można połączyć i za-
pisać je na końcu wyrażenia regularnego. Na przykład, poniższe wyrażenie wyszukuje
sÅ‚owo web bez wzgl¹du na wielkość liter i operuje na caÅ‚ym przeszukiwanym Å‚aÅ„cu-
chu znaków:
Zgodnie z założeniami trzeciej wersji standardu ECMA-262, zarówno przeglądarka In-
ternet Explorer 5.5, jak i Netscape Navigator 6 udost¹pniajÄ… także modyfikator wymu-
szający przeszukiwanie wielu wierszy tekstu w długich łańcuchach znaków (czyli łań-
cuchach zawierajÄ…cych znaki powrotu karetki). Modyfikator ten jest oznaczany jako .
Wi¹kszość skÅ‚adowych wyrażeÅ„ regularnych w j¹zyku JavaScript bazuje na wyraże-
niach regularnych j¹zyka Perl. W kilku przypadkach JavaScript udost¹pnia alternatyw-
ne rozwiÄ…zania umożliwiajÄ…ce uproszczenie skÅ‚adni wyrażeÅ„ lub posÅ‚użyć si¹ skÅ‚adniÄ…
stosowanÄ… w j¹zyku Perl, co niewÄ…tpliwie doceniÄ… osoby znajÄ…ce ten j¹zyk.
Użycie wyrażeÅ„ regularnych daje programistom duże pole manewru, pozwalajÄ…c w zwi¹-
zły sposób określić takie cechy wyszukiwanego łańcucha znaków jak: typy znaków, jakie
mogÄ… si¹ w nim pojawić, znaki, jakie mogÄ… si¹ pojawić na jego kraÅ„cach oraz jak cz¹sto
Å‚aÅ„cuch ten może si¹ pojawiać. Grupa specjalnych, jednoznakowych symboli sterujÄ…cych
(czyli liter poprzedzanych znakiem odwrotnego ukośnika) obsługuje wszelkie możliwości
związane z wyszukiwaniem znaków, z kolei symbole przestankowe oraz grupujące
umożliwiajÄ… zdefiniowanie zagadnieÅ„ zwiÄ…zanych z cz¹stoÅ›ciÄ… wyszukiwania i zasi¹giem.
W
We wczeÅ›niejszej cz¹Å›ci rozdziaÅ‚u przedstawiÅ‚em przykÅ‚ad pokazujÄ…cy symbol , który
określał granice wyrazu na jednym z krańców łańcucha wyszukującego. Wszystkie sym-
bole specjalne, które można stosować w wyrażeniach regularnych w j¹zyku JavaScript zo-
stały przedstawione w tabeli 38.1. Podane symbole zaliczane są do metaznaków czyli
tych cz¹Å›ci wyrażeÅ„, które nie stanowiÄ… cz¹Å›ci poszukiwanego Å‚aÅ„cucha, lecz raczej peÅ‚niÄ…
funkcj¹ poleceÅ„ lub wskazówek odnoÅ›nie do dziaÅ‚ania wyrażenia regularnego.
Metaznaki używane przy tworzeniu wyrażeń regularnych w języku JavaScript
Znak Co wskazuje Przykład
Granic¹ sÅ‚owa wskazuje na przykÅ‚ad wyrazy lub ,
lecz nie
Wszystko z wyjątkiem wskazuje na przykład wyrazy lub ,
granicy słowa lecz nie
Cyfr¹ od 0 do 9 wskazuje na przykÅ‚ad ciÄ…g lub , lecz nie
Wszystko z wyjątkiem cyfry wskazuje na przykład ciąg , lecz nie lub
Pojedynczy znak odst¹pu wskazuje na przykÅ‚ad ciÄ…g ,
lecz nie ani
Pojedynczy znak wskazuje na przykład ciąg , lecz nie
rozdzielajÄ…cy, ale nie odst¹p lub
Liter¹, cyfr¹ lub znak wskazuje na przykÅ‚ad ciÄ…g lub , lecz nie
podkreślenia
Wszystko z wyjątkiem litery, wskazuje na przykład ciąg , lecz nie ciągi i
cyfry lub znaku podkreślenia
Dowolny znak z wyjÄ…tkiem wskazuje ciÄ…gi , , oraz wszelkie inne
znaku nowego wiersza możliwe ciÄ…gi skÅ‚adajÄ…ce si¹ z trzech znaków
Zbiór znaków wskazuje ciągi i , lecz nie
Wszystko z wyjÄ…tkiem wskazuje ciÄ…gi lub , lecz nie lub
podanego zbioru znaków
Metaznaków przedstawionych w tabeli 38.1 nie należy mylić ze znakami sterującymi
oznaczajÄ…cymi znaki: tabulacji ( ), nowego wiersza ( ), powrotu karetki ( ), przewi-
ni¹cia wiersza ( ) oraz tabulacji pionowej ( ).
Przyjrzyjmy si¹ teraz dokÅ‚adniej metaznakom oraz . WewnÄ…trz tych nawia-
sów kwadratowych można podać pojedyncze znaki (jak to pokazałem na przykładach
w tabeli 38.1), ciÄ…gÅ‚y zakres znaków lub kombinacj¹ obu tych rozwiÄ…zaÅ„. Na przykÅ‚ad,
metaznak można także zdefiniować jako , co oznacza dowolny znak z zakresu
od 0 do 9. Aby wskazać cyfr¹ 2 lub dowolnÄ… cyfr¹ z zakresu od 6 do 8, należaÅ‚oby użyć
zapisu . Podobnie, metaznak można wyrazić jako , przy czym
należy pami¹tać o tym, że w wyrażeniach regularnych jest uwzgl¹dniana wielkość liter.
Wszystkie wyrażenia przedstawione w tabeli 38.1, z wyjątkiem wyrażeń zapisanych
w nawiasach kwadratowych, wskazujÄ… na pojedynczy znak. W wi¹kszoÅ›ci wypadków
nie można jednak przewidzieć w jaki sposób sformatowane b¹dÄ… dane przychodzÄ…ce
l
nie znamy bowiem ani długości słowa, ani liczby cyfr w liczbie. Kilka kolejnych meta-
znaków umożliwia okreÅ›lenie cz¹stotliwoÅ›ci wystÄ…pienia pojedynczego znaku lub caÅ‚e-
go typu znaków (określonego podobnie jak w tabeli 38.1). Jeśli dysponujesz jakimiś do-
świadczeniami w obsłudze systemów operacyjnych wykorzystujących wiersz poleceń,
przekonasz si¹, że wyst¹pujÄ… pewne analogie pomi¹dzy znakami wieloznacznymi i me-
taznakami stosowanymi w wyrażeniach regularnych. Metaznaki umożliwiające określa-
nie cz¹stotliwoÅ›ci wyst¹powania znaków lub fragmentów wyrażeÅ„ regularnych j¹zyka
JavaScript zostały przedstawione w tabeli 38.2.
Metaznaki określające liczbę wystąpień w wyrażeniach regularnych JavaScriptu
Znak Wskazuje ostatni raz Przykład
[ Pobierz całość w formacie PDF ]