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)) //falseFunkcja 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()
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 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