RegExp

Wyrażenie regularne, czyli wzorzec do wyszukiwania, sprawdzania i zamiany fragmentów tekstu.

Zwraca
Nowy obiekt RegExp.
Na tej stronie

Przykład

#
JavaScript
const postalCode = /^\d{2}-\d{3}$/

console.log(postalCode.test('00-950'))
console.log(postalCode.test('00950'))
console.log(postalCode)
Konsola
true
false
/^\d{2}-\d{3}$/

^ i $ oznaczają początek i koniec tekstu, \d dowolną cyfrę, a {2} dokładnie dwa powtórzenia.

Definicja i zastosowanie

#

Wyrażenie regularne opisuje wzorzec tekstu, na przykład „same cyfry”, „kod pocztowy” albo „słowo zaczynające się wielką literą”. Tworzysz je literałem między ukośnikami, /wzorzec/flagi, albo konstruktorem new RegExp("wzorzec", "flagi"), gdy wzorzec powstaje dynamicznie, np. z tekstu wpisanego przez użytkownika.

Metoda test() sprawdza, czy tekst pasuje do wzorca, i zwraca true lub false. Wyrażenia współpracują też z metodami napisów: match() i matchAll() wyszukują dopasowania, replace() i replaceAll() zamieniają fragmenty, a split() dzieli tekst.

Flagi zmieniają działanie wzorca: g szuka wszystkich dopasowań, i ignoruje wielkość liter, m sprawia, że ^ i $ działają dla każdej linii, a u włącza pełną obsługę Unicode. Nawiasy ( ) tworzą grupy, z których odczytasz fragmenty dopasowania, a zapis (?<nazwa>...) nadaje grupie nazwę.

Składnia

#
Składnia
/pattern/flags
new RegExp(pattern)
new RegExp(pattern, flags)

regex.test(text)
text.match(regex)
text.replace(regex, replacement)

Parametry

#
  • pattern

    napis lub RegExp

    Wzorzec. W konstruktorze to zwykły napis, więc ukośniki wsteczne trzeba podwoić: "\\d+".
  • flags

    opcjonalny napis

    Flagi, np. "g", "i" albo "gi".

Więcej przykładów

#
Wszystkie dopasowania i wielkość liter
JavaScript
const text = 'Zadanie 3 za 15 pkt, zadanie 7 za 40 pkt'

console.log(text.match(/\d+/g))
console.log(text.match(/zadanie/gi).length)
console.log(text.match(/zadanie/g).length)
Konsola
['3', '15', '7', '40']
2
1
Grupy i zamiana
JavaScript
const date = '2026-09-28'
const { groups } = date.match(/(?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2})/)

console.log(groups.day, groups.month, groups.year)
console.log(date.replace(/(\d{4})-(\d{2})-(\d{2})/, '$3.$2.$1'))
Konsola
28 09 2026
28.09.2026
Pułapka: flaga g i test()
JavaScript
const hasDigit = /\d/g

console.log(hasDigit.test('a1'))
console.log(hasDigit.test('a1'))
console.log(hasDigit.test('a1'))
Konsola
true
false
true

Z flagą g wyrażenie zapamiętuje w lastIndex, gdzie skończyło szukać, i kolejne wywołanie zaczyna od tego miejsca. Do samego sprawdzania pomiń flagę g.

Obsługa przeglądarek

#

Szeroko dostępne

Działa we wszystkich nowoczesnych przeglądarkach, także na telefonach. Możesz używać bez obaw.

  • Chrome
  • Edge
  • Firefox
  • Safari

Dobre praktyki

#
  • W literale /.../ piszesz \d, ale w napisie dla new RegExp() musisz podwoić ukośnik: "\\d".
  • Nie używaj flagi g z test(), gdy wywołujesz je wielokrotnie na tym samym wyrażeniu. Kolejne wywołanie może zwrócić false.
  • Tekst od użytkownika wstawiany do wzorca zabezpiecz przed znakami specjalnymi (np. ., *, ?). Nowe przeglądarki mają do tego metodę RegExp.escape().

Powiązane hasła

#

Widzisz błąd albo brakuje przykładu? Napisz do nas.