--- title: RegExp slug: Web/JavaScript/Reference/Global_Objects/RegExp tags: - Constructor - JavaScript - RegExp - Regular Expressions translation_of: Web/JavaScript/Reference/Global_Objects/RegExp original_slug: Web/JavaScript/Referencje/Obiekty/RegExp ---
{{JSRef}}
Obiekt wyrażeń regularnych (ang. regular expression) zawiera wzór regularnego wyrażenia. Posiada ono właściwości i metody, które umożliwiają znalezienie lub zmianę ciągu znaków w innym ciągu znaków.
W dodatku do właściwości pojedynczego obiektu wyrażenia regularnego, które tworzysz używając funkcji konstruktora RegExp
, predefiniowany obiekt RegExp
posiada własności statyczne, które są ustawione, kiedy jakiekolwiek wyrażenie regularne jest użyte.
Odpowiednik tekstowy lub funkcja-konstruktor RegExp
.
Odpowiednik tekstowy jest używany jak poniżej:
/wzór/flagi
Konstruktor jest używany jak poniżej:
new RegExp("wzór"[, "flagi"])
wzór
flagi
g
- wyszukiwanie globalne, i
- ignoruje wielkość liter, m
- wyszukiwanie w wielu liniach.Zauważ, że parametry w formacie tekstowym nie używają cudzysłowu do oznaczenia ciągów znaków, kiedy parametry funkcji konstruktora używają cudzysłów. Tak, więc poniższe wyrażenia tworzą to samo wyrażenie regularne:
/ab+c/i; new RegExp("ab+c", "i");
Podczas użycia funkcji konstruktora, standardowe znaki ucieczki (string escape rule, poprzedzanie znaków specjalnych backslash'’ "\" kiedy użyte w ciągu znaków) są wymagane. Na przykład poniższe dwa przykłady są identyczne:
re = new RegExp("\\w+"); re = /\w+/;
Znak | Znaczenie |
\ |
Dla znaków które zwykle są traktowane dosłownie, oznacza że następny znak jest specjalny i nie ma być interpretowany standardowo. Na przykład, -lub- Dla znaków, które zwykle są traktowane jako specjalne oznacza, że następny znak jest zwykły powinien być interpretowany dosłownie. Na przykład, |
^ |
Znajduje początek wejścia. Jeśli flaga wielu linii (ang. multiline) jest ustawiona na prawda ( Na przykład, |
$ |
Oznacza koniec wejścia. Jeśli flaga wielu linii (ang. multiline) jest ustawiona na prawda ( Na przykład, |
* |
Znajduje poprzedzającą pozycję 0 lub więcej razy. Na przykład, |
+ |
Znajduje poprzedzającą pozycję 1 lub więcej razy. Równoważne do Na przykład, |
? |
Znajduje poprzedzającą pozycję 0 razy lub 1 raz. Na przykład Jeśli zostanie użyte zaraz po którymś ze znaków *, +, ?, lub {}, to wymusza przejście do trybu niezachłannego (domyślne jest dopasowanie zachłanne), czyli dopasowanie następuje do najmniejszego ciągu spełniającego wyrażenie, a nie do największego. Pytajnik używany jest także w lookahead assertions, opisanych pod |
. |
(Kropka) znajduje jakikolwiek pojedynczy znak poza znakiem nowej linii. Na przykład, |
(x) |
Znajduje "x" i zapamiętuje to dopasowanie. Nazywa się to "nawiasy wychwytujące" (ang. capturing parentheses). Na przykład, |
(?:x) |
Znajduje "x", ale nie pamięta dopasowania. Nazywa się to "nawiasy niewychwytujące" (ang. non-capturing parentheses). Znaleziony podciąg (substring) nie może być wywołany ponownie z elementów wynikowych tablicy |
x(?=y) |
Znajduje "x", tylko wtedy, gdy zaraz po "x" jest "y". Na przykład, |
x(?!y) |
Znajduje "x", tylko, jeśli po "x" nie ma "y". Na przykład,
|
x|y |
Znajduje "x" lub "y". Na przykład, |
{n} |
Gdzie Na przykład, |
{n,} |
Gdzie Na przykład, |
{n,m} |
Gdzie Na przykład, |
xyz |
Zestaw znaków. Wyszukuje jakikolwiek z podanych znaków. Możesz podać przedział znaków używając myślnika. Na przykład, |
^xyz |
Przeciwny zestaw znaków. Wyszukuje cokolwiek, co nie jest wewnątrz nawiasów. Podobnie jak powyżej można podać zakres znaków używając myślnika. Na przykład, |
\\b |
Wyszukuje znak backspace (nie mylić z |
\b |
Wyszukuje granicę wyrazów (ang. word boundary), jak na przykład spację (nie mylić z Na przykład, |
\B |
Znajduje brak granicy niewyrazu (ang. non-word boundary). Na przykład, |
\cX |
Gdzie Na przykład, |
\d |
Znajduje cyfrę. Odpowiednik Na przykład, |
\D |
Wyszukuje jakikolwiek znak nieliczbowy. Odpowiednik Na przykład, |
\f |
Znajduje znak wysuwu wiersza (form feed). |
\n |
Znajduje znak następnego wiersza (line feed). |
\r |
Znajduje znak powrotu karetki (carriage return). |
\s |
Znajduje pojedynczy biały znak (ang. white space character), wliczając w to spację, tabulator, znak wysuwu wiersza, znak następnego wiersza. Odpowiednik Na przykład, |
\S |
Zaznacza jakikolwiek znak inny niż biały (ang. white space). Odpowiednik Na przykład, |
\t |
Znajduje tabulator. |
\v |
Znajduje pionowy tabulator (ang. vertical tab). |
\w |
Znajduje jakikolwiek znak alfanumeryczny i znak podkreślenia Na przykład, |
\W |
Zaznaczy jakikolwiek znak niewyrazowy. Odpowiednik Na przykład, |
\n |
Gdzie Na przykład, |
\0 |
Wyszukuje znak NUL. Bezpośrednio po |
\xhh |
Znajduje znak o kodzie hh (dwie cyfry szesnastkowe) |
\uhhhh |
Znajduje znak o kodzie hhhh (cztery cyfry szesnastkowe). |
Notacja tekstowa zostaje skompilowana, kiedy wyrażenie regularne jest wykonane. Używaj notacji tekstowej wtedy, kiedy wyrażenie regularne pozostanie niezmienione. Na przykład, jeśli użyjesz notacji tekstowej do konstrukcji wyrażenia regularnego w pętli, wyrażenie to nie zostanie przekompilowane podczas każdej iteracji.
Konstruktor obiektu wyrażenia regularnego, na przykład new RegExp("ab+c")
, pozwala na kompilację podczas czasu wykonywania (ang. runtime compilation) wyrażenia. Używaj funkcji konstruktora, kiedy wiesz, że wzór wyrażenia regularnego będzie się zmieniać lub gdy nie znasz tego wzoru i pobierasz go z innego źródła, jak na przykład wejście użytkownika.
Oddzielny predefiniowany obiekt RegExp
jest dostępny dla każdego okna, to jest każdy oddzielny wątek uruchomienia JavaScriptu dostaje jego własny obiekt RegExp
. Jako że każdy skrypt uruchamiany jest cały w oddzielnym wątku, zapewnia to, iż oddzielne skrypty nie nadpisują wartości obiektu RegExp
.
RegExp.length
RegExp.length
wynosi 2.Globalny objekt RegExp
nie posiada własnych metod, jednam może dziedziczyć metody z innych obiektów.
replace
Poniższy przykład używa metodę replace
do zamiany wyrazów w ciągu (stringu). Podczas zamiany tekstu, skrypt używa "$1
" i "$2
" do oznaczenia wyników odpowiadających im nawiasów we wzorze wyrażenia regularnego.
var re = /(\w+)\s(\w+)/; var str = "Jan Kowalski"; var newstr = str.replace(re, "$2, $1"); document.write(newstr);
Wyświetli "Kowalski, Jan".