Funkcje dla wyrażeń regularnych

Funkcja test()

Funkcja test() zwraca prawdę lub fałsz w zależności, czy wyrażenie regularne znalazło pasujący fragment.

const reg = /cat/;
console.log( reg.test("cat dog") ) //true

const reg2 = new RegExp("^cat$");
alert(reg2.test("cat dog")); //false

const text = "Turlal goryl...";
const reg = /[0-9]+/;
console.log(reg.test(text)) //false

Funkcja match()

Dla każdego string istnieje funkcja match(), która wyszukuje i zwraca pasujący fragment lub fragmenty jeżeli użyliśmy flagi g:

const text = "Numer1, Numer2, Numer3, NumerB, Numer5, NumerD";

const reg1 = /Numer[1-4A-C]/;
console.log(text.match(reg1)); //[Numer1]

const reg2 = /Numer[1-4A-C]/g;
console.log(text.match(reg2)); //[Numer1, Numer2, Numer3, NumerB]

Funkcja matchAll()

Funkcja matchAll() to nowsza wersja funkcji match().

W odróżnieniu od funkcji match() zwraca iterowalny obiekt składający się z tablic zawierających znalezione grupy. Jeżeli nic nie znajdzie, zwracany jest null:

Funkcja split()

Funkcja split() obiektu string służy do podziału tekstu na części. Znakiem podziału może być dowolny tekst, ale i wyrażenie regularne:

Funkcja search() dla regexpów zwraca indeks pierwszego wystąpienia podciągu w przeszukiwanym tekście:

Funkcja ta zwraca tylko pierwsze wystąpienie szukanego ciągu. Jeżeli chcemy znaleźć wszystkie wystąpienia, powinniśmy skorzystać z funkcji matchAll

Funkcja replace()

Obiekty typu string posiadają funkcję replace(), która służy do zamiany jednego ciągu na drugi.

Przy jej stosowaniu także możemy używać wyrażeń regularnych:

Gdy w wyrażeniu regularnym zastosujemy grupy, w ciągu na który zamieniamy możemy skorzystać z dodatkowych zapisów:

$&
wstawia cały pasujący fragment

$`

wstawia fragment występujący przed pasującym fragmentem

$'

wstawia fragment występujący po pasującym fragmencie

$n

wstawia fragment z grupy o danym numerze np. $1

$<name>

wstawia fragment z grupy o danej nazwie

$$

wstawia znak dolara

Jako drugi argument tej funkcji możemy podać też funkcję, która przyjmuje kilka parametrów:

match

pasujący fragment tekstu (to samo co w powyższej tabeli $&)

p1, p2, p3, ...pn

kolejne pasujące fragmenty należące do zastosowanych w wyrażeniu grup

offset

offset pasującego fragmentu tekstu. Przykładowo jeżeli badany tekst to abcd, a pasujący fragment to bc, to offset będzie wynosił 1

string

tekst który był badany

groups

Jeżeli dana przeglądarka wspiera wyłapywanie grup z nazwami, parametr ten będzie zawierał obiekt którego kluczami będą nazwy grup, a wartościami pasujące fragmenty

W Ecmascript 2021 wprowadzono też funkcję replaceAll(), która działa całkiem podobnie, natomiast domyślnie zamienia wszystkie znalezione wystąpienia.

Funkcja exec()

Funkcja exec() działa nieco inaczej w zależności od tego, czy użyte wraz z nią wyrażenie regularne ma flagę g czy jej nie ma.

Jeżeli wyrażenie nie ma flagi g, funkcja exec() zwróci po prostu pasujący fragment.

Jeżeli jednak użyjemy flagi g, pierwsze odpalenie exec() zwróci pierwszy pasujący fragment, a dodatkowo pozycja zostanie zapisana w zmiennej regexp.lastIndex. Każde kolejne odpalenie tej funkcji dla tego wyrażenia będzie zwracało kolejne fragmenty rozpoczynając od aktualizowanej właściwości regexp.lastIndex

Last updated