Przejdź do treści

JS / RegExp - Kurs JavaScript (JS)

W tym rozdziale dowiesz się...

Do czego służą wyrażenia regularne?

  • JS
    RegExp

    Jak utworzyć obiekt wyrażenia regularnego?

  • JS
    new RegExp

    Jak utworzyć nową instancję obiektu wyrażenia regularnego?

RegExp

Jak utworzyć obiekt wyrażenia regularnego?

RegExp()
RegExp(pattern)
RegExp(pattern, flags)
Parametry:
String|RegExp pattern - wzorzec (domyślnie: "(?:)")
String flags - flagi:
  • g - dopasowanie globalne
  • i - ignorowanie wielkości liter
  • m - dopasowanie wielu linii
Wartość:
RegExp - instancja obiektu wyrażenia regularnego
Wyjątki:
TypeError - pattern jest typu RegExp i argument flags został zdefiniowany
SyntaxError - nieprawidłowy wzorzec lub flagi

Jeżeli pattern jest instancją obiektu RegExp, a argument flags nie został podany (albo wynosi undefined), funkcja zwraca obiekt przekazany jako pattern. W przeciwnym razie następuje wywołanie: new RegExp(...).

Przykład:

var x = /abc/;
RegExp(x) === x;     // true
RegExp("abc", "i");  // /abc/i
 
RegExp(x, "i");      // TypeError
RegExp("(");         // SyntaxError
RegExp("abc", "x");  // SyntaxError
RegExp("abc", "gg"); // SyntaxError

new RegExp

Jak utworzyć nową instancję obiektu wyrażenia regularnego?


new RegExp()
new RegExp(pattern)
new RegExp(pattern, flags)
Parametry:
String|RegExp pattern - wzorzec (domyślnie: "(?:)")
String flags - flagi:
  • g - dopasowanie globalne
  • i - ignorowanie wielkości liter
  • m - dopasowanie wielu linii
Wartość:
RegExp - nowa instancja obiektu wyrażenia regularnego
Wyjątki:
TypeError - pattern jest typu RegExp i argument flags został zdefiniowany
SyntaxError - nieprawidłowy wzorzec lub flagi

Tworzy nową instancję obiektu wyrażenia regularnego.

Przy definiowaniu wzorca należy zwrócić uwagę na prawidłowy zapis znaków specjalnych wyrażeń regularnych. Chcąc pozbyć się specjalnego działania znaku, gdy podajemy go jako tekst - inaczej niż w przypadku literału wyrażenia regularnego - musimy poprzedzić taki znak specjalny dwoma, a nie jednym odwróconym ukośnikiem. Znaków ukośnika nie trzeba już niczym poprzedzać, ponieważ funkcja powinna zrobić to automatycznie. Dlatego zapis new RegExp("a/b\\(c\\)d\\\\e") będzie równoważny: /a\/b\(c\)d\\e/.

Możliwe jest jednoczesne podanie kilku flag - np.: "gi". Kolejność ich wymieniania nie ma znaczenia, ale ta sama flaga nie może zostać powtórzona.

Przykład:

new RegExp("abc", "i");  // /abc/i
 
new RegExp(/abc/, "i");  // TypeError
new RegExp("(");         // SyntaxError
new RegExp("abc", "x");  // SyntaxError
new RegExp("abc", "gg"); // SyntaxError

source

O.source
Parametry:
RegExp O - instancja wyrażenia regularnego
Wartość:
String - wartość wyrażenia regularnego

Przechowuje wartość wyrażenia regularnego, którą można przekazać do konstruktora, jako argument pattern. Tej wartości nie można zmieniać ani nie jest ona dostępna w pętli for-in

Przykład:

/(ab)c/ig.source;                      // "(ab)c"
new RegExp("a/b\\(c\\)d\\\\e").source; // "a/b\(c\)d\\e"
 
var x = /abc/;
x.source;                              // "abc"
x.source = "cde";
x.source;                              // "abc"

global

O.global
Parametry:
RegExp O - instancja wyrażenia regularnego
Wartość:
Boolean - czy dopasowanie jest globalne (ustawiona flaga g)

Pozwala sprawdzić, czy definiując obiekt wyrażenia regularnego, ustawiono flagę g. Tej wartości nie można zmieniać ani nie jest ona dostępna w pętli for-in.

Przykład:

/abc/gi.global;                 // true
new RegExp("abc", "gi").global; // true
 
/abc/i.global;                  // false
new RegExp("abc").global;       // false
 
var x = /abc/g;
x.global;                       // true
x.global = false;
x.global;                       // true

ignoreCase

O.ignoreCase
Parametry:
RegExp O - instancja wyrażenia regularnego
Wartość:
Boolean - czy wielkość liter jest ignorowana (ustawiona flaga i)

Pozwala sprawdzić, czy definiując obiekt wyrażenia regularnego, ustawiono flagę i. Tej wartości nie można zmieniać ani nie jest ona dostępna w pętli for-in.

Przykład:

/abc/gi.ignoreCase;                 // true
new RegExp("abc", "gi").ignoreCase; // true
 
/abc/g.ignoreCase;                  // false
new RegExp("abc").ignoreCase;       // false
 
var x = /abc/i;
x.ignoreCase;                       // true
x.gnoreCase = false;
x.ignoreCase;                       // true

multiline

O.multiline
Parametry:
RegExp O - instancja wyrażenia regularnego
Wartość:
Boolean - czy nastąpi dopasowanie wielu linii (ustawiona flaga m)

Pozwala sprawdzić, czy definiując obiekt wyrażenia regularnego, ustawiono flagę m. Tej wartości nie można zmieniać ani nie jest ona dostępna w pętli for-in.

Przykład:

/abc/gm.multiline;                 // true
new RegExp("abc", "gm").multiline; // true
 
/abc/g.multiline;                  // false
new RegExp("abc").multiline;       // false
 
var x = /abc/m;
x.multiline;                       // true
x.multiline = false;
x.multiline;                       // true

lastIndex

O.lastIndex
Parametry:
RegExp O - instancja wyrażenia regularnego
Wartość:
Number - pozycja w tekście (licząc od zera), od której rozpocząć wyszukiwanie (domyślnie: 0)

Przechowuje pozycję w tekście, od której powinno rozpocząć się wyszukiwanie wzorca. Ta właściwość nie będzie dostępna w pętli for-in, ale można jej zmienić wartość. Dzięki temu przy wyszukiwaniu dopasowań do wzorca możemy pominąć początek tekstu. W przypadku dopasowania globalnego - kiedy wyrażenie regularne posiada flagę g - właściwość lastIndex jest automatycznie ustawiana przez funkcje: RegExp.prototype.exec i RegExp.prototype.test.

Przykład:

var x = /(ab)c/gi;
x.lastIndex;            // 0
x.lastIndex = 3;
x.lastIndex;            // 3
x.exec("ABCd efg abc"); // ["abc", "ab"]
x.lastIndex;            // 12
Facebook