Witamy w kompletnym przewodniku po wyrażeniach regularnych w JavaScript! W tym artykule szczegółowo omówimy, czym są wyrażenia regularne, jak są używane w języku JavaScript i jak mogą pomóc w uproszczeniu i optymalizacji kodu. Od podstaw po praktyczne przykłady – omówimy wszystko, co musisz wiedzieć, aby zacząć w pełni wykorzystywać wyrażenia regularne w swoich projektach JavaScript. No to zaczynajmy!
Wprowadzenie do wyrażeń regularnych
Wyrażenia regularne to wzorce wyszukiwania służące do wyszukiwania i manipulowania tekstem w ciągach znaków. Składają się z kombinacji znaków literowych i metaznaków, które definiują konkretne reguły wyszukiwania dopasowań w tekście. Reguły te mogą obejmować wyszukiwanie określonych znaków, zakresów znaków, powtórzeń, alternatyw i wiele więcej.
W JavaScript wyrażenia regularne są tworzone przy użyciu klasy RegExp lub używając dosłownie /patrón/. Wzorzec jest samym wyrażeniem regularnym, ujętym pomiędzy ukośniki. Przyjrzyjmy się prostemu przykładowi:
const regex = /hola/;
W tym przykładzie utworzyliśmy wyrażenie regularne, które będzie wyszukiwać ciąg „hello” w tekście. Teraz, gdy mamy już podstawową wiedzę na temat wyrażeń regularnych, możemy przyjrzeć się bliżej kluczowym koncepcjom i zaawansowanym technikom pracy z nimi w JavaScript.
Podstawowa składnia wyrażeń regularnych
Wyrażenia regularne w JavaScript składają się z kilku kluczowych elementów, które umożliwiają definiowanie bardziej złożonych wzorców wyszukiwania. Elementy te obejmują znaki literowe, metaznaki, klasy znaków, kwantyfikatory, kotwice i inne. Przyjrzyjmy się kilku przykładom tych elementów:
Znaki dosłowne
Znaki dosłowne to takie, których szuka się w tekście w takiej postaci, w jakiej się pojawiają. Na przykład wyrażenie regularne /hola/ wyszuka sekwencję znaków „hello” w ciągu tekstowym. Ważne jest, aby pamiętać, że wyrażenia regularne rozróżniają wielkość liter, więc /hola/ nie będzie pasować do „Hello” lub „HELLO”.
Metaznaki
Metaznaki to znaki specjalne, które mają specjalne znaczenie w wyrażeniach regularnych. Na przykład metaznak . Służy do reprezentowania dowolnego znaku z wyjątkiem nowej linii. Innym powszechnym metaznakiem jest ^, który służy do wskazania początku ciągu tekstowego. Na przykład wyrażenie regularne /^hola/ dopasuje dowolny ciąg tekstowy rozpoczynający się od słowa „hello”.
Klasy postaci
Klasy znaków służą do wyszukiwania dowolnych znaków w określonym zestawie. Na przykład wyrażenie regularne /[aeiou]/ dopasuje dowolną samogłoskę w ciągu tekstowym. Możliwe jest również stosowanie zakresów znaków w klasach znaków. Na przykład wyrażenie regularne /[a-z]/ dopasuje dowolną małą literę.
Kwantyfikatory
Kwantyfikatory służą do określania liczby wystąpień danego elementu w wyrażeniu regularnym. Na przykład kwantyfikator * oznacza, że poprzedni element może pojawić się zero lub więcej razy. Kwantyfikator + oznacza, że poprzedni element powinien pojawić się jeden lub więcej razy. Na przykład wyrażenie regularne /a+/ dopasuje jedno lub więcej "a" w ciągu tekstowym.
Kotwice
Kotwice służą do wskazywania pozycji dopasowania w ciągu tekstowym. Na przykład kotwica \b pasuje do granicy słowa. Na przykład wyrażenie regularne /bholab/ będzie pasował tylko do słowa „hello” pełne słowo, bez dopasowywania dłuższych słów zawierających „hello” jako część ich składową.
To tylko kilka przykładów podstawowej składni wyrażeń regularnych w JavaScript. W dalszej części artykułu będziemy zgłębiać bardziej zaawansowane koncepcje i techniki pracy z wyrażeniami regularnymi w JavaScript.
Podstawowe wyszukiwanie dopasowań
Jedną z najczęstszych operacji wykonywanych przy użyciu wyrażeń regularnych jest wyszukiwanie dopasowań w ciągu tekstowym. W JavaScript możemy użyć metody search() aby znaleźć pierwsze dopasowanie wyrażenia regularnego w ciągu tekstowym. Zobaczmy przykład:
const texto = "¡Hola, mundo!"; const regex = /mundo/; const indice = texto.search(regex); console.log(indice); // 7
W tym przykładzie zastosowaliśmy metodę search() aby znaleźć pierwsze dopasowanie wyrażenia regularnego /mundo/ w ciągu tekstowym „Witaj, świecie!” Metoda search() zwraca indeks pierwszego znalezionego dopasowania lub -1, jeśli nie znaleziono żadnego dopasowania.
Oprócz metody search()JavaScript udostępnia również inne przydatne metody pracy z wyrażeniami regularnymi, takie jak: match(), replace(), split() y test(). Każda z tych metod ma swój własny cel i może być stosowana zgodnie z Twoimi indywidualnymi potrzebami.
Używanie modyfikatorów i flag
W języku JavaScript wyrażenia regularne mogą zawierać modyfikatory i flagi, które umożliwiają bardziej elastyczne i dostosowane wyszukiwanie. Modyfikatory dodawane są na końcu wyrażenia regularnego i zmieniają jego zachowanie. Do najczęściej stosowanych modyfikatorów należą:
ja (nieczuły)
Modyfikator i służy do wyszukiwania bez uwzględniania wielkości liter. Na przykład wyrażenie regularne /hola/i dopasuje zarówno „hello”, jak i „Hello” lub „HELLO”.
g (globalny)
Modyfikator g Służy do przeprowadzania globalnego wyszukiwania w całym ciągu tekstowym, zamiast zatrzymywania się na pierwszym znalezionym elemencie. Na przykład wyrażenie regularne /a+/g dopasuje wszystkie wystąpienia jednego lub więcej znaków "a" w ciągu tekstowym.
m (wielowierszowy)
Modyfikator m Służy do wyszukiwania w wielu wierszach ciągu tekstowego. Na przykład wyrażenie regularne /^hola/m dopasuje słowo „hello” na początku każdego wiersza w ciągu tekstowym.
Oprócz modyfikatorów JavaScript pozwala również na używanie flag w wyrażeniach regularnych. Flagi są dodawane po drugim ukośniku podczas tworzenia wyrażenia regularnego za pomocą klasy RegExp. Do najczęściej spotykanych flag należą:
ja (nieczuły)
Podobnie jak modyfikator i, flaga i wykonuje wyszukiwanie bez uwzględniania wielkości liter. Na przykład wyrażenie regularne new RegExp("hola", "i") dopasuje zarówno „hello”, jak i „Hello” lub „HELLO”.
g (globalny)
Podobnie jak modyfikator g, flaga g wykonuje globalne wyszukiwanie w całym ciągu tekstowym. Na przykład wyrażenie regularne new RegExp("a+", "g") dopasuje wszystkie wystąpienia jednego lub więcej znaków "a" w ciągu tekstowym.
m (wielowierszowy)
Podobnie jak modyfikator m, flaga m wykonuje wyszukiwanie w wielu wierszach ciągu tekstowego. Na przykład wyrażenie regularne new RegExp("^hola", "m") dopasuje słowo „hello” na początku każdego wiersza w ciągu tekstowym.
Używanie modyfikatorów i flag w wyrażeniach regularnych JavaScript może być bardzo przydatne do dostosowywania wyszukiwań do różnych przypadków i konkretnych wymagań. Poeksperymentuj z nimi i odkryj, jak najlepiej wykorzystać te funkcje w swoim kodzie.
Metaznaki i znaki specjalne
Metaznaki i znaki specjalne stanowią kluczowe elementy wyrażeń regularnych, które umożliwiają przeprowadzanie bardziej zaawansowanych i elastycznych wyszukiwań. Wspomnieliśmy już o niektórych metaznakach, takich jak: . y ^, ale jest ich o wiele więcej, których można używać w wyrażeniach regularnych. Przyjrzyjmy się bliżej niektórym najczęściej występującym metaznakom i znakom specjalnym:
. (punkt)
Metaznak . Służy do reprezentowania dowolnego znaku z wyjątkiem nowej linii. Na przykład wyrażenie regularne /h.t/ dopasuje słowa „hat”, „hot”, „hit” i każde inne trzyliterowe słowo zaczynające się na „h” i kończące na „t”.
\ (ukośnik odwrotny)
Ukośnik odwrotny służy do ucieczki przed znakami specjalnymi w wyrażeniu regularnym. Na przykład, jeśli chcesz wyszukać kropkę w ciągu tekstowym, musisz poprzedzić ją ukośnikiem odwrotnym. Wyrażenie regularne /www\.google\.com/ będzie pasować do ciągu tekstowego „www.google.com”.
\d (cyfra)
Metaznak \d służy do wyszukiwania dowolnej cyfry od 0 do 9. Na przykład wyrażenie regularne /\d+/ dopasuje dowolną jedną lub więcej cyfr w ciągu tekstowym.
\w (znak alfanumeryczny)
Metaznak \w służy do wyszukiwania dowolnych znaków alfanumerycznych (wielkich i małych liter, cyfr i podkreśleń). Na przykład wyrażenie regularne /\w+/ dopasuje dowolne słowo składające się z jednego lub większej liczby znaków alfanumerycznych w ciągu tekstowym.
To tylko kilka przykładów metaznaków i znaków specjalnych, których możesz używać w wyrażeniach regularnych. W miarę jak będziesz coraz lepiej poznawać wyrażenia regularne w JavaScript, odkryjesz szeroką gamę opcji umożliwiających udoskonalenie wyszukiwania i manipulacji tekstem.
Klasy i zakresy znaków
Klasy znaków stanowią kolejny kluczowy element wyrażeń regularnych, umożliwiający wyszukiwanie dowolnych znaków w określonym zestawie. W JavaScript możemy używać nawiasów [] aby zdefiniować klasę znaków. Przyjrzyjmy się kilku przykładom klas i zakresów znaków:
[aeiou]
Klasa postaci [aeiou] dopasuje dowolną samogłoskę w ciągu tekstowym. Na przykład wyrażenie regularne /[aeiou]/ dopasuje „a”, „e”, „i”, „o” lub „u” w ciągu tekstowym.
[az]
Zakres znaków [a-z] będzie pasować do dowolnej małej litery alfabetu angielskiego. Na przykład wyrażenie regularne /[a-z]/ dopasuje dowolną małą literę w ciągu tekstowym.
[0-9]
Zakres znaków [0-9] dopasuje dowolną cyfrę od 0 do 9 w ciągu tekstowym. Na przykład wyrażenie regularne /[0-9]/ dopasuje dowolną liczbę jednocyfrową.
[A-Za-z]
Klasa postaci [A-Za-z] dopasuje dowolną wielką lub małą literę alfabetu angielskiego. Na przykład wyrażenie regularne /[A-Za-z]/ dopasuje dowolną literę w ciągu tekstowym.
Klasy i zakresy znaków umożliwiają zdefiniowanie konkretnych zestawów znaków, które mają być wyszukiwane w wyrażeniu regularnym. Użyj ich, aby dostosować wyszukiwanie do swoich konkretnych potrzeb i ograniczeń.
Kwantyfikatory i powtórzenia
Kwantyfikatory i powtórzenia to kluczowe elementy wyrażeń regularnych, które umożliwiają określenie liczby wystąpień danego elementu w ciągu tekstowym. Przyjrzyjmy się niektórym najczęściej używanym kwantyfikatorom w JavaScript:
* (gwiazdka)
Kwantyfikator * oznacza, że poprzedni element może pojawić się zero lub więcej razy. Na przykład wyrażenie regularne /a*/ dopasuje zero lub więcej znaków 'a' w ciągu tekstowym.
+ (więcej)
Kwantyfikator + oznacza, że poprzedni element powinien pojawić się jeden lub więcej razy. Na przykład wyrażenie regularne /a+/ dopasuje jedno lub więcej "a" w ciągu tekstowym.
? (pytanie)
Kwantyfikator ? oznacza, że poprzedni element może pojawić się zero razy lub jeden raz. Na przykład wyrażenie regularne /colou?r/ będzie pasować zarówno do „color”, jak i „colour”.
{n} (dokładnie n razy)
Kwantyfikator {n} oznacza, że poprzedni element musi wystąpić dokładnie n razy. Na przykład wyrażenie regularne /a{3}/ dopasuje dokładnie trzy litery "a" w ciągu tekstowym.
{n,} (co najmniej n razy)
Kwantyfikator {n,} oznacza, że poprzedni element musi wystąpić co najmniej n razy. Na przykład wyrażenie regularne /a{2,}/ dopasuje dwa lub więcej znaków 'a' w ciągu tekstowym.
{n, m}
Kwantyfikator {n,m} oznacza, że poprzedni element musi wystąpić co najmniej n razy i co najwyżej m razy. Na przykład wyrażenie regularne /a{2,4}/ dopasuje dwa, trzy lub cztery „a” w ciągu tekstowym.
To tylko kilka przykładów kwantyfikatorów, których możesz używać w wyrażeniach regularnych. Kwantyfikatory umożliwiają określenie wzorców powtórzeń podczas wyszukiwania i manipulacji tekstem, dzięki czemu łatwiej jest wyodrębnić konkretne informacje z ciągów tekstowych.
Kotwice i granice słów
Kotwice i granice słów to elementy umożliwiające wskazanie pozycji dopasowania w ciągu tekstowym. Elementy te są szczególnie przydatne, gdy chcemy wyszukać całe słowa lub upewnić się, że znalezione słowo znajduje się na początku lub na końcu wiersza. Przyjrzyjmy się kilku przykładom kotwic i granic słów:
\b (granica słowa)
Limit słów \b dopasowuje granicę między znakiem alfanumerycznym i znakiem niealfanumerycznym. Na przykład wyrażenie regularne /\bjavascript\b/ dopasuje wyłącznie słowo „javascript” jako pełne słowo, nie dopasowując dłuższych słów zawierających „javascript” jako część siebie.
^ (początek wiersza)
Charakter ^ Służy do wskazania początku wiersza w ciągu tekstowym. Na przykład wyrażenie regularne /^hola/ dopasuje słowo „hello” na początku każdego wiersza w ciągu tekstowym.
$ (koniec wiersza)
Charakter $ Służy do wskazania końca wiersza w ciągu tekstowym. Na przykład wyrażenie regularne /mundo$/ dopasuje słowo „świat” znajdujące się na końcu każdego wiersza w ciągu tekstowym.
\A (początek tekstu)
Charakter \A Służy do wskazania początku całego tekstu w ciągu tekstowym, a nie tylko początku wiersza. Na przykład wyrażenie regularne /^\AHola/ dopasuje słowo „Witaj” na początku całego tekstu.
\Z (koniec tekstu)
Charakter \Z służy do wskazania końca całego tekstu w ciągu tekstowym, a nie tylko końca wiersza. Na przykład wyrażenie regularne /Mundo\Z/ dopasuje słowo „Świat” na końcu całego tekstu.
Kotwice i granice słów pozwalają nam wyszukiwać dopasowania w określonych miejscach ciągu tekstowego, co może być przydatne w sytuacjach, gdy chcemy mieć pewność, że dopasowanie znajduje się w określonej pozycji.
Grupy i przechwyty
Grupy i przechwytywanie to zaawansowane elementy wyrażeń regularnych, które umożliwiają grupowanie podwyrażeń i przechwytywanie ich w celu późniejszego wykorzystania. Zobaczmy jak działają grupy i przechwytywanie:
( ) (nawiasy)
Nawiasy są Używają grupowania podwyrażenia w wyrażeniu regularnym. Na przykład wyrażenie regularne /(d{2})-(d{2})-(d{4})/ se służy do wyszukiwania daty w formacie „dd-mm-rrrr. Grupy ( ) Umożliwiają one oddzielne rejestrowanie wartości dnia, miesiąca i roku.
\1, \2, \3 (odniesienia do grup)
Odwołania do grup służą do odwoływania się do wcześniej przechwyconych grup w wyrażeniu regularnym. Na przykład wyrażenie regularne /(\w+) \1/ dopasuje dowolne słowo, po którym następuje powtórzone to samo słowo. Na przykład: „cześć cześć”, „świat, świat” itp.
?: (grupa nieprzechwytująca)
Symbol ?: Służy do tworzenia grup nieprzechwytujących. Grupy te wykorzystujemy, gdy chcemy grupować podwyrażenia, nie chcąc jednak przechwytywać wyniku. Na przykład wyrażenie regularne /https?:\/\/(?:www\.)?google\.com/ będzie pasować zarówno do „http://www.google.com”, jak i do „https://google.com”, ale obejmie tylko odpowiednią część adresu URL.
Grupy i przechwytywanie pozwalają nam na bardziej efektywne i czytelne strukturowanie i organizowanie wyrażeń regularnych. Dają nam również możliwość przechwytywania określonych wartości do późniejszego wykorzystania w naszych aplikacjach.
Przydatne metody pracy z wyrażeniami regularnymi
JavaScript udostępnia kilka przydatnych metod pracy z wyrażeniami regularnymi. Metody te umożliwiają wykonywanie typowych operacji, takich jak wyszukiwanie, zamiana i dzielenie ciągów tekstowych, przy użyciu wyrażeń regularnych. Przyjrzyjmy się bliżej niektórym z tych metod:
mecz()
Metoda match() Służy do wyszukiwania wszystkich dopasowań wyrażenia regularnego w ciągu tekstowym i zwracania tablicy zawierającej wyniki. Na przykład:
const texto = "¡Hola, mundo!"; const regex = /o/g; const coincidencias = texto.match(regex); console.log(coincidencias); // ["o", "o"]
W tym przykładzie zastosowaliśmy metodę match() aby znaleźć wszystkie dopasowania wyrażenia regularnego /o/g w ciągu tekstowym „Witaj, świecie!” Metoda match() zwraca tablicę zawierającą wszystkie znalezione dopasowania.
zastąpić ()
Metoda replace() służy do zastępowania wyrażeń regularnych w ciągu tekstowym nową wartością. Na przykład:
const texto = "¡Hola, mundo!"; const regex = /mundo/; const nuevoTexto = texto.replace(regex, "amigo"); console.log(nuevoTexto); // "¡Hola, amigo!"
W tym przykładzie zastosowaliśmy metodę replace() aby zastąpić wyrażenie regularne /mundo/ w ciągu tekstowym „Witaj, świecie!” dla słowa „przyjaciel”. Metoda replace() zwraca nowy ciąg tekstowy z wprowadzonymi podstawieniami.
rozdzielać()
Metoda split() służy do podziału ciągu tekstowego na tablicę podciągów, używając wyrażenia regularnego jako separatora. Na przykład:
const texto = "Hola,mundo,amigo"; const regex = /,/g; const subcadenas = texto.split(regex); console.log(subcadenas); // ["Hola", "mundo", "amigo"]
W tym przykładzie zastosowaliśmy metodę split() aby podzielić ciąg tekstowy „Hello,world,friend” na tablicę podciągów za pomocą wyrażenia regularnego /,/g jako separator. Metoda split() zwraca tablicę z wynikowymi podciągami.
test()
Metoda test() Służy do sprawdzania, czy wyrażenie regularne ma jakieś odpowiedniki w ciągu tekstowym. Metoda zwraca true jeśli jest dopasowanie i false W przeciwnym razie. Na przykład:
const texto = "Hola, mundo!"; const regex = /mundo/; const resultado = regex.test(texto); console.log(resultado); // true
W tym przykładzie zastosowaliśmy metodę test() aby sprawdzić, czy wyrażenie regularne /mundo/ ma jakiekolwiek dopasowania w ciągu tekstowym „Witaj, świecie!”. Metoda test() przynieść z powrotem true ponieważ jest pewien zbieg okoliczności.
To tylko niektóre z najczęściej stosowanych metod pracy z wyrażeniami regularnymi w JavaScript. Każda z tych metod ma swój własny cel i może być stosowana zgodnie z Twoimi indywidualnymi potrzebami. Eksperymentuj z nimi i odkryj, jak mogą ułatwić i przyspieszyć pracę z wyrażeniami regularnymi.
Najczęściej zadawane pytania
Czym są wyrażenia regularne w JavaScript? Wyrażenia regularne w JavaScript to wzorce wyszukiwania używane do wyszukiwania i manipulowania tekstem w ciągach znaków.
Jak tworzyć wyrażenia regularne w JavaScript? Wyrażenia regularne w JavaScript są tworzone przy użyciu klasy RegExp lub używając dosłownie /patrón/.
Jaka jest różnica między modyfikatorami i flagami w wyrażeniach regularnych? Modyfikatory dodawane są na końcu wyrażenia regularnego i zmieniają jego zachowanie. Flagi są dodawane po drugim ukośniku podczas tworzenia wyrażenia regularnego za pomocą klasy RegExp.
Jaka jest różnica pomiędzy metodą match() i metoda test()? Metoda match() Służy do znajdowania wszystkich dopasowań wyrażenia regularnego w ciągu tekstowym i zwracania tablicy zawierającej wyniki. Metoda test() Służy do sprawdzania, czy wyrażenie regularne ma jakieś odpowiedniki w ciągu tekstowym i zwraca wartość logiczną.
Jak mogę przechwycić określone wartości za pomocą grup w wyrażeniu regularnym? Grupy ( ) w wyrażeniu regularnym umożliwiają przechwytywanie konkretnych podwyrażeń. Następnie możesz odwołać się do tych grup, korzystając z odnośników \1, \2, itp.
Jakich metod mogę użyć do pracy z wyrażeniami regularnymi w JavaScript? Oto kilka przydatnych metod pracy z wyrażeniami regularnymi w JavaScript: match(), replace(), split() y test(). Każda z tych metod ma swój własny cel i może być stosowana zgodnie z Twoimi indywidualnymi potrzebami.
Wnioski
Wyrażenia regularne to potężne narzędzie do pracy z tekstem w JavaScript. Zrozumienie podstaw , składni i zaawansowanych technik wyrażeń regularnych pozwoli Ci sprawnie i precyzyjnie wyszukiwać, zamieniać i manipulować ciągami tekstowymi. Od podstawowego dopasowywania, przez używanie modyfikatorów, grup i innych przydatnych metod, nauczyłeś się, jak najlepiej wykorzystać wyrażenia regularne w swoich projektach JavaScript.
Pamiętaj o ćwiczeniu i eksperymentowaniu z różnymi wzorcami i przypadkami użycia, aby wzmocnić swoje zrozumienie i znajomość wyrażeń regularnych. Nie wahaj się używać wyrażeń regularnych, aby poprawić wydajność i jakość swojego kodu!
Wskaźnik
- 1 Wprowadzenie do wyrażeń regularnych
- 2 Podstawowa składnia wyrażeń regularnych
- 3 Podstawowe wyszukiwanie dopasowań
- 4 Używanie modyfikatorów i flag
- 5 Metaznaki i znaki specjalne
- 6 Klasy i zakresy znaków
- 7 Kwantyfikatory i powtórzenia
- 8 Kotwice i granice słów
- 9 Grupy i przechwyty
- 10 Przydatne metody pracy z wyrażeniami regularnymi
- 11 Najczęściej zadawane pytania
- 12 Wnioski