Node.js dla początkujących - Część 11: Wyrażenia regularne (Regex)
Mateusz Kędziora

Witajcie w kolejnym wpisie z kursu JavaScript dla początkujących! Dziś zajmiemy się tematem, który na pierwszy rzut oka może wydawać się nieco skomplikowany, ale w rzeczywistości jest niezwykle przydatny – wyrażeniami regularnymi, znanymi również jako Regex.
Wyrażenia regularne to swego rodzaju wzorce, za pomocą których możemy wyszukiwać, dopasowywać i manipulować tekstem. Są one nieocenione przy walidacji danych, wyszukiwaniu wzorców w tekście, a nawet przy zaawansowanej edycji tekstu. Zanim jednak przejdziemy do konkretnych przykładów, warto przytoczyć pewną anegdotę:
Some people, when confronted with a problem, think “I know, I’ll use regular expressions.” Now they have two problems.
Co możemy przetłumaczyć jako
Niektórzy ludzie, gdy napotykają problem, myślą: „Wiem, użyję wyrażeń regularnych”. Teraz mają dwa problemy.
Chociaż anegdota ta ma w sobie ziarno prawdy (źle napisane wyrażenie regularne może być trudne do debugowania), nie powinna nas zniechęcać. Zrozumienie podstaw Regex znacząco ułatwi nam pracę z tekstem.
Składnia Wyrażeń Regularnych
Wyrażenie regularne w JavaScript tworzymy na dwa sposoby:
- Literalnie: Umieszczając wzorzec między dwoma ukośnikami
/wzorzec/
. - Za pomocą konstruktora
RegExp
:new RegExp('wzorzec')
.
Podstawowe elementy składni Regex to:
- Znaki literalne: Zwykłe znaki, np.
a
,b
,1
, dopasowują same siebie. - Metaznaki: Znaki o specjalnym znaczeniu, np.
.
,^
,$
,*
,+
,?
,[]
,{}
,()
,\
. Aby dopasować metaznak literalnie, musimy go poprzedzić odwrotnym ukośnikiem\
, np.\.
dopasuje kropkę. - Klasy znaków:
[abc]
– dopasowuje jeden znak z podanego zbioru (a, b lub c).[^abc]
– dopasowuje jeden znak, który nie jest w podanym zbiorze.[a-z]
– dopasowuje dowolną małą literę z zakresu a-z.[0-9]
– dopasowuje dowolną cyfrę.\d
– to samo co[0-9]
.\D
– to samo co[^0-9]
.\w
– dopasowuje znak słowa (litera, cyfra lub podkreślenie).\W
– dopasowuje znak, który nie jest znakiem słowa.\s
– dopasowuje biały znak (spacja, tabulator, znak nowego wiersza).\S
– dopasowuje znak, który nie jest białym znakiem.
- Kwantyfikatory: Określają, ile razy dany element ma wystąpić.
*
– zero lub więcej razy.+
– jeden lub więcej razy.?
– zero lub jeden raz.{n}
– dokładnie n razy.{n,m}
– od n do m razy.
- Kotwice: Określają pozycję dopasowania.
^
– początek łańcucha.$
– koniec łańcucha.
Metody Regex w JavaScript
JavaScript udostępnia kilka metod do pracy z wyrażeniami regularnymi:
test()
: Sprawdza, czy dany łańcuch pasuje do wzorca. Zwracatrue
lubfalse
.
const regex = /kot/;
console.log(regex.test("Ala ma kota.")); // true
console.log(regex.test("Pies biega.")); // false
match()
: Wyszukuje dopasowania w łańcuchu i zwraca tablicę z wynikami lubnull
, jeśli nie znaleziono dopasowań.
const regex = /[0-9]+/g; // + oznacza 1 lub więcej cyfr, g - flaga globalna (znajdź wszystkie dopasowania)
const str = "Mam 3 koty i 12 psów.";
const matches = str.match(regex);
console.log(matches); // ["3", "12"]
replace()
: Zamienia dopasowania w łańcuchu na inny łańcuch.
const regex = /kot/g;
const str = "Ala ma kota, kot jest czarny.";
const newStr = str.replace(regex, "psa");
console.log(newStr); // "Ala ma psa, pies jest czarny."
Przykłady Zastosowań
- Walidacja adresu e-mail:
const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
console.log(emailRegex.test("[email protected]")); // true
console.log(emailRegex.test("test@example")); // false
- Wyszukiwanie numerów telefonów:
const phoneRegex = /\d{3}-\d{3}-\d{3}/;
console.log(phoneRegex.test("123-456-789")); // true
Praca Domowa
- Napisz wyrażenie regularne, które będzie sprawdzać, czy dany łańcuch jest poprawnym kodem pocztowym w formacie XX-XXX (np. 00-000, 12-345).
- Napisz funkcję, która z danego tekstu wyciągnie wszystkie adresy URL.
Eksperymentuj!
Pamiętaj, że najlepszym sposobem na naukę wyrażeń regularnych jest praktyka. Zachęcam Cię do samodzielnego eksperymentowania z różnymi wzorcami i metodami. Istnieje wiele stron internetowych, które pozwalają na testowanie wyrażeń regularnych na żywo, co może być bardzo pomocne.
Jeśli ten wpis Ci się podobał, koniecznie zajrzyj do innych postów na moim blogu, gdzie znajdziesz więcej informacji na temat JavaScript i programowania. Powodzenia!
Polecane artykuły
Docker vs Kubernetes: Który dla Ciebie w 2025?
Docker i Kubernetes objaśnione! Która technologia lepsza dla początkujących w 2025? Porównanie, przykłady i przyszłość.
Mateusz Kędziora
DevOps: Automatyzacja zadań sysadmina dla programistów
Zautomatyzuj pracę sysadmina w środowisku DevOps! Praktyczne przykłady, skrypty, Ansible, Terraform, Prometheus i Grafana.
Mateusz Kędziora
Automatyzacja Linux/macOS z Bash: Praktyczny Przewodnik
Zacznij automatyzować system Linux/macOS z Bash! Dowiedz się, czym jest Bash, jak pisać skrypty i używać podstawowych komend.
Mateusz Kędziora