RegExp
Wyrażenie regularne, czyli wzorzec do wyszukiwania, sprawdzania i zamiany fragmentów tekstu.
- Zwraca
- Nowy obiekt
RegExp.
Przykład
#const postalCode = /^\d{2}-\d{3}$/
console.log(postalCode.test('00-950'))
console.log(postalCode.test('00950'))
console.log(postalCode)^ 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
#/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
#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)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'))const hasDigit = /\d/g
console.log(hasDigit.test('a1'))
console.log(hasDigit.test('a1'))
console.log(hasDigit.test('a1'))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 dlanew RegExp()musisz podwoić ukośnik:"\\d". - Nie używaj flagi
gztest(), 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
#- String.prototype.replace()Zwraca nowy napis, w którym pierwsze dopasowanie wzorca (albo wszystkie, przy fladze g) zamieniono na inny tekst.
- String.prototype.match()Dopasowuje napis do wyrażenia regularnego. Zwraca tablicę z dopasowaniem lub wszystkimi dopasowaniami albo null.
- String.prototype.split()Dzieli napis na tablicę fragmentów według separatora: znaku, tekstu lub wyrażenia regularnego.
- String.prototype.replaceAll()Zwraca nowy napis, w którym wszystkie wystąpienia wzorca zamieniono na podany tekst lub wynik funkcji.
- String.prototype.includes()Sprawdza, czy napis zawiera podany fragment tekstu. Zwraca true albo false i rozróżnia wielkość liter.
- String.prototype.search()Zwraca indeks pierwszego dopasowania wyrażenia regularnego w napisie albo -1.
Widzisz błąd albo brakuje przykładu? Napisz do nas.