Obiekt RegExp
Dostępność: od JavaScript 1.2 i JScript 3.0.
Przeglądarki: IE4, FF, NN4, OP7
Obiekt RegExp służy do przechowywania oraz obsługi wyrażeń regularnych. Obiekt tego typu może zostać utworzony na dwa sposoby: poprzez wykorzystanie literału oraz poprzez formalne wywołanie konstruktora. W pierwszym przypadku należy umieścić w kodzie wyrażenie zawarte pomiędzy prawymi ukośnikami, które może być dodatkowo zakończone znacznikami (flagami, z ang. flags):
/wyrażenie/[flagi]
W przypadku drugim wyrażenie tworzone jest za pomocą następującej konstrukcji:
new RegExp("wyrażenie"[, "flagi"])
Przykłady:
/(ab)+c/gi
new RegExp("(ab)+c", "gi")
Parametr flagi może być dowolną kombinacją liter:
i — oznacza, że w wyrażeniu ma być ignorowana wielkość liter;
g — oznacza, że przetwarzanie ma dotyczyć całego ciągu;
m — oznacza, że przetwarzanie ma dotyczyć ciągu zawierającego wiele wierszy.
Właściwości obiektu RegExp
Właściwości udostępniane przez obiekty typu RegExp zostały przedstawione w tabeli 3.7. Większość z nich jest dostępna we wszystkich popularnych przeglądarkach.
Tabela 3.7. Właściwości udostępniane przez obiekty RegExp
Nazwa |
Znaczenie |
Dostępność w JavaScript i JScript |
Przeglądarki |
global |
Zawiera wartość true, jeśli został ustawiony atrybut g, lub false w przeciwnym przypadku. |
Od JavaScript 1.2 i JScript 3.0 |
IE4, FF, NN4, OP7 |
ignoreCase |
Zawiera wartość true, jeśli został ustawiony atrybut i, lub false w przeciwnym przypadku. |
Od JavaScript 1.2 i JScript 3.0 |
IE4, FF, NN4, OP7 |
input |
Ciąg znaków, na którym przeprowadzana jest operacja dopasowania do wzorca. |
Od JavaScript 1.2 i JScript 3.0 |
IE4, FF, NN4 |
lastIndex |
Pozycja ostatniego pasującego wzorca. |
Od JavaScript 1.2 i JScript 3.0 |
IE4, FF, NN4, OP7 |
lastMatch |
Ostatni pasujący wzorzec. |
Od JavaScript 1.2 i JScript 5.5 |
IE5.5, FF, NN6, OP7 |
lastParen |
Ostatnie pasujące do wzorca wyrażenie ujęte w nawiasy. |
Od JavaScript 1.2 i JScript 5.5 |
IE5.5, FF, NN6 |
leftContext |
Tekst znajdujący się przed ostatnio odnalezionym wzorcem. |
Od JavaScript 1.2 i JScript 5.5 |
IE5.5, FF, NN6 |
multiline |
Zawiera wartość true, jeśli został ustawiony atrybut m, lub false w przeciwnym przypadku. |
Od JavaScript 1.2 i JScript 3.0 |
IE4, FF, NN4 |
rightContext |
Tekst znajdujący się za ostatnio odnalezionym wzorcem. |
Od JavaScript 1.2 i JScript 5.5 |
IE5.5, FF, NN6 |
source |
Zawiera treść wyrażenia regularnego. |
Od JavaScript 1.2 i JScript 3.0 |
IE4, FF, NN4, OP7 |
Metody obiektu RegExp
Metoda compile
Składnia: regexp.compile(wyrażenie[, flagi])
Dostępność: od JavaScript 1.2 i JScript 3.0
Przeglądarki: IE4, FF, NN4, OP7
Metoda compile dokonuje kompilacji wyrażenia wyrażenie i zwraca nowy obiekt typu RegExp odpowiadający temu wyrażeniu. Wyrażenie może zawierać flagi i, g, m, których znaczenie jest takie jak w przypadku konstrukcji nowego wyrażenia. Obecnie ta metoda uważana jest za przestarzałą.
Metoda exec
Składnia: regexp.exec(str)
Dostępność: od JavaScript 1.2 i JScript 3.0
Przeglądarki: IE4, FF, NN4, OP7
Metoda exec wykonuje przeszukanie ciągu str, wykorzystując wzorzec zawarty w wyrażeniu reprezentowanym przez obiekt regexp. Zwraca tablicę wynikową. Jeżeli wyrażenie nie zawiera atrybutu g, pasujący ciąg, o ile zostanie odnaleziony, znajdzie się w komórce o indeksie 0, a w kolejnych komórkach znajdą się kolejne podciągi odpowiadające kolejnym grupowanym wyrażeniom (o ile zastosowano grupowanie). Całkowita liczba komórek będzie zawarta, podobnie jak w każdej innej tablicy, we właściwości lenght. Oprócz tego w tablicy znajdą się właściwość index zawierająca indeks znaku, w którym został znaleziony ciąg pasujący do wzorca, a także właściwość input zawierająca przeszukiwany ciąg znaków (argument metody exec). Przykład ilustrujący zawartość tablicy wynikowej znajduje się na listingu 3.22.
Listing 3.22. Przetwarzanie wyrażeń regularnych
<script type="text/javascript">
var str = "Ala ma kota, Ala ma też psa.";
var regexp = /Ala/;
var wynik = regexp.exec(str);
for(index in wynik){
document.write("wynik[" + index + "] = " + wynik[index] + "<br />");
}
</script>
Jeśli metoda exec jest wywoływana na rzecz obiektu reprezentującego wyrażenie z ustawionym atrybutem g, musi umożliwić odszukanie wszystkich (a nie tylko pierwszego) występujących w tekście ciągów pasujących do wzorca. Postać tablicy wynikowej jest wtedy taka sama jak w wyrażeniach bez atrybutu g, ale przeszukiwanie ciągu rozpoczyna się od znaku wskazywanego przez właściwość lastIndex. Jeżeli wzorzec zostanie odnaleziony, zwracana jest tablica, a właściwość lastIndex jest ustawiana na pierwszy znak za odnalezionym ciągiem. Jeżeli wzorzec nie zostanie odnaleziony, zwracana jest wartość null, a właściwość lastIndex jest zerowana. Oznacza to, że przeszukiwanie globalne za pomocą metody exec można przeprowadzić w prosty sposób przy użyciu pętli while. Skrypt ilustrujący to zagadnienie znajduje się na listingu 3.23.
Listing 3.23. Przeszukiwanie globalne przy użyciu pętli typu while
<script type="text/javascript">
var str = "Ala ma kota, Ala ma też psa.";
var regexp = /Ala/g;
while((wynik = regexp.exec(str)) != null){
for(index in wynik){
document.write("wynik[" + index + "] = " + wynik[index] + "<br />");
}
document.write("<hr>");
}
</script>
Metoda test
Składnia: regexp.test(str)
Dostępność: od JavaScript 1.2 i JScript 3.0
Przeglądarki: IE4, FF, NN4, OP7
Metoda test sprawdza, czy w ciągu str jest zawarty wzorzec reprezentowany przez obiekt regexp. Jeśli tak, zwraca wartość true; jeśli nie, zwraca wartość false. Przykładowe wywołanie:
/ala/i.test("Ola ma kota, a Ala ma psa.")
da w wyniku wartość true.
Metoda toString
Składnia: regexp.toString()
Dostępność: od JavaScript 1.2 i JScript 3.0
Przeglądarki: IE4, FF, NN4, OP7
Metoda toString zwraca ciąg znaków będący reprezentacją obiektu, na rzecz którego została wywołana. W przypadku obiektu typu RegExp będzie to ciąg znaków zawierający wyrażenie regularne.