Wyrażenia regularne (regex) to potężne narzędzie do wyszukiwania i przetwarzania tekstu. Mogą wydawać się skomplikowane, ale podstawowe pojęcia są w rzeczywistości proste. Ten przewodnik pomoże Ci zacząć.
Co to są wyrażenia regularne?
Wyrażenie regularne jest wzorcem wyszukiwania tekstu. Na przykład wyrażenie\d{3}-\d{2}-\d{2}znajdzie wszystkie numery telefonów w formacie 123-45-67.
Podstawowa składnia
Symbolika
.— dowolny pojedynczy znak\d— liczba (0-9)\w— litera, cyfra lub podkreślenie\s— znak spacji (spacja, tabulator)[abc]— jeden z symboli a, b lub c[^abc]— dowolny symbol z wyjątkiem a, b, c
Kwantyfikatory
*— 0 lub więcej powtórzeń+— 1 lub więcej powtórzeń?— 0 lub 1 powtórzenie{3}- dokładnie 3 powtórzenia{2,5}— od 2 do 5 powtórzeń
Kotwice
^— początek linii$— koniec linii\b— limit słów
Praktyczne przykłady
Weryfikacja e-mailem
^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$
Telefon (Ukraina)
^\+?380\d{9}$
Adres URL
^https?:\/\/[\w.-]+\.[a-z]{2,}(\/\S*)?$
Adres IP (IPv4)
^(\d{1,3}\.){3}\d{1,3}$
Data (DD.MM.RRRR)
^(0[1-9]|[12]\d|3[01])\.(0[1-9]|1[0-2])\.\d{4}$
Testowanie wyrażeń regularnych
Użyj tegoTester Regexu Xuverodo testowania wyrażeń w czasie rzeczywistym. Narzędzie podświetla dopasowania i pokazuje grupy przechwytywania.
Regex w różnych językach programowania
JavaScript
const pattern = /^\d{3}-\d{2}-\d{2}$/;
pattern.test("123-45-67"); // true
Pyton
import re
re.match(r'^\d{3}-\d{2}-\d{2}$', "123-45-67") # Match object
PHP
preg_match('/^\d{3}-\d{2}-\d{2}$/', "123-45-67"); // 1
Typowe błędy
- Chciwość—
.*uchwycić jak najwięcej. Użyj tego.*?dla minimalnego nakładania się - Znaki specjalne nie są zmieniane- kropka
.bez\pasuje do dowolnego znaku - Zapomniane kotwice- bez
^I$wyrażenie znajdzie częściowe dopasowania