Czytelnicy tacy jak ty pomagają wspierać MUO. Kiedy dokonujesz zakupu za pomocą linków na naszej stronie, możemy otrzymać prowizję partnerską. Czytaj więcej.

Wyrażenia regularne, popularnie znane jako „regex” lub „regex”, to ciągi opisujące wzorzec wyszukiwania. Możesz użyć wyrażeń regularnych, aby sprawdzić, czy ciąg zawiera określony wzorzec, wyodrębnić informacje z ciągu i zastąpić części ciągu nowym tekstem.

Poznaj podstawową składnię wyrażeń regularnych i dowiedz się, jak ich używać w JavaScript.

Podstawowa składnia wyrażeń regularnych

Istnieją dwa sposoby tworzenia wyrażeń regularnych w JavaScript: użycie literału wyrażenia regularnego i użycie metody RegExp konstruktor.

Literał wyrażenia regularnego składa się ze wzorca umieszczonego pomiędzy ukośnikami, po którym następuje opcjonalna flaga.

Na przykład:

// Bez flagi
konst wyrażenie regularne_1 = /pattern/

// Z flagą
konst wyrażenie regularne_2 = /pattern/flaga

Flaga to opcjonalny parametr, który można dodać do wyrażenia regularnego, aby zmodyfikować jego zachowanie. Na przykład:

konst wyrażenie regularneFlaga = /the/g;

The G flaga wskazuje, że wyrażenie powinno pasować do wszystkich wystąpień, a nie tylko do pierwszego.

Możesz także utworzyć wyrażenie regularne za pomocą RegExp konstruktor. Na przykład:

konst wyrażenie regularne = nowyRegExp("Wzór", "G");

The RegExp konstruktor przyjmuje dwa parametry: wzorzec — ciąg znaków lub literał wyrażenia regularnego — oraz flagę (flagi).

Istnieją dwie dość powszechne flagi, których będziesz używać z wyrażeniami regularnymi w JavaScript:

  • G: Flaga globalna sprawia, że ​​wyrażenie regularne dopasowuje wszystkie wystąpienia wzorca w danym łańcuchu zamiast pojedynczego wystąpienia.
  • I: Flaga niewrażliwa na wielkość liter sprawia, że ​​wyrażenie regularne ignoruje wielkość liter we wzorcu i dopasowuje wielkie i małe litery w podanym łańcuchu.

Możesz używać flag razem w jednym wyrażeniu w dowolnej kolejności. Na przykład:

konst wyrażenie regularne = nowyRegExp("Wzór", "żołnierz amerykański");

To wyrażenie będzie pasować do wszystkich wystąpień „Wzorca”, niezależnie od wielkości liter.

W wyrażeniach regularnych niektóre znaki, zwane metaznakami, mają specjalne znaczenie. Możesz ich użyć do dopasowania określonych typów znaków lub wzorów.

Oto niektóre z najczęściej używanych metaznaków i ich znaczenie:

  • Znak wieloznaczny (.): Ten znak pasuje do dowolnego pojedynczego znaku z wyjątkiem nowej linii. Jest to przydatne narzędzie do dopasowywania wzorców z nieznanymi znakami.
  • Gwiazda Kleene'a (*): Ten znak pasuje do zera lub więcej wystąpień poprzedzającego znaku lub grupy. Pozwala na pojawienie się poprzedzającego znaku lub grupy w łańcuchu dowolną liczbę razy, włączając zero.
  • Znak opcjonalny (?): Ten znak pasuje do zera lub jednego wystąpienia poprzedzającego znaku lub grupy.
  • Punkt zaczepienia początku linii (^): Ten znak pasuje tylko do początku wiersza lub łańcucha.
  • Kotwica końca linii ($): Ten znak pasuje do końca wiersza lub łańcucha.
  • Zestaw znaków/klasa ([]): Zestaw znaków dopasowuje dowolny znak z zestawu znaków w łańcuchu. Definiujesz je za pomocą nawiasów kwadratowych [] i możesz określić zestaw znaków stałych, znaków specjalnych lub określonych grup znaków.
  • Znak naprzemienny (|): Ten znak odpowiada poprzedzającemu lub następującemu znakowi lub grupie. Działa podobnie do OR Operator JavaScript.
  • Znak grupujący (()): Znak grupujący umożliwia grupowanie znaków lub wyrażeń podrzędnych, stosowanie do nich operatorów jako jednostki i kontrolowanie kolejności operacji.

Testowanie łańcucha pod kątem wyrażenia regularnego w JavaScript

W języku JavaScript można testować ciąg znaków pod kątem wyrażenia regularnego, korzystając z kilku metod.

W tej sekcji założono, że masz podstawową wiedzę na temat wyrażeń regularnych i wzorców. Jeśli nie czujesz się komfortowo z wyrażeniami regularnymi, sprawdź przewodnik po wyrażeniach regularnych dla początkujących Pierwszy.

Metoda testowa

The .test() Metoda zwraca wartość logiczną wskazującą, czy wyrażenie regularne pasuje do łańcucha, czy nie. Ta metoda przyjmuje jako argument ciąg znaków do wykonania wyszukiwania. Jest to szczególnie przydatne w przypadku prostych kontroli.

Na przykład:

pozwalać wyrażenie regularne = /.com$/;
pozwalać str = „example.com”;
konsola.log (regex.test (str)); // PRAWDA

To wyrażenie regularne pasuje do ciągu, który kończy się na „.com”.

Metoda egzekucyjna

The .exec() metoda zwraca tablicę zawierającą dopasowany tekst i wszystkie przechwycone grupy lub zero jeśli nie znajdzie dopasowania. Ta metoda przyjmuje jako argument ciąg znaków do wykonania wyszukiwania. Jest to przydatne w przypadku bardziej złożonych wyrażeń regularnych.

Na przykład:

pozwalać wyrażenie regularne = /^\\(?([0-9]{3})\\)?[-. ]?([0-9]{3})[-. ]?([0-9]{4})$/;
pozwalać str = "123-456-7890";
pozwalać wynik = wyrażenie regularne.exec (str);

Jeśli (wynik!== zero) {
konsola.dziennik(`${wynik[0]} jest prawidłowym numerem telefonu”.);
} w przeciwnym razie {
konsola.dziennik("Nieprawidłowy numer telefonu");
}

Powyższe wyrażenie regularne pasuje do ciągu, który zaczyna się opcjonalnym „(", trzy cyfry i opcjonalny ")". Następnie szuka opcjonalnego „-", "." lub spacja, po której następują trzy cyfry. W końcu szuka opcjonalnego „-", "." lub spacja, po której następują cztery cyfry na końcu łańcucha.

To wyrażenie regularne dopasowuje numery telefonów w formacie „(xxx) xxx-xxxx”, „xxx-xxx-xxxx”, „xxx.xxx.xxxx” lub „xxx xxx xxxx”.

Jeśli znajdzie dopasowanie, .exec() zwraca tablicę zawierającą dopasowany tekst i wszystkie przechwycone grupy (zdefiniowane w nawiasach). Będzie zawierać każdą grupę jako dodatkowy element w zwracanej tablicy. Umożliwia to dostęp do określonych części dopasowanego tekstu, co może pomóc w wydobyciu informacji z ciągu znaków.

Metoda zamiany

The .zastępować() Metoda wyszukuje dopasowanie między wyrażeniem regularnym a łańcuchem i zastępuje dopasowany tekst określonym tekstem zastępczym. Jest to metoda obiektów łańcuchowych, która jako argumenty przyjmuje wyrażenie regularne i ciąg zastępczy.

Na przykład:

pozwalać ciąg = „Szybki brązowy lis przeskakuje nad leniwym psem”.;
pozwalać wyrażenie = /The/gi;
pozwalać nowyString = string.replace (wyrażenie, "A");
konsola.log (nowyciąg); // „szybki brązowy lis przeskakuje nad leniwym psem”.

Ten przykład wywołuje zastępować() metoda na strunowy zmienna przekazująca wyrażenie regularne, wyrażenie. Wyrażenie regularne dopasuje wszystkie wystąpienia „The” w łańcuchu, niezależnie od wielkości liter. Wywołanie metody replace nakazuje jej zastąpienie każdego wystąpienia ciągiem „a”.

Zagadnienia dotyczące wydajności podczas używania wyrażeń regularnych

Chociaż wyrażenia regularne pomagają dopasowywać i manipulować łańcuchami, mogą być również kosztowne pod względem wydajności. Tworzenie wzorów tak szczegółowych, jak to możliwe i utrzymywanie ich w prostocie jest niezbędne, aby zachować ich wydajność.