String. prototype. match()
Dopasowuje napis do wyrażenia regularnego. Zwraca tablicę z dopasowaniem lub wszystkimi dopasowaniami albo null.
- Zwraca
- Tablicę z dopasowaniem i grupami (bez flagi
g), tablicę wszystkich dopasowań (z flagąg) albonull, gdy nic nie pasuje. - Zmienia oryginał
- Nie
Przykład
#const message = 'Zadanie 12 za 30 pkt, zadanie 13 za 45 pkt'
console.log(message.match(/\d+/g))
console.log(message.match(/(\d+) pkt/))
console.log(message.match(/bonus/))Definicja i zastosowanie
#Metoda match() sprawdza napis wyrażeniem regularnym i zwraca znalezione fragmenty. Gdy nic nie pasuje, wynikiem jest null, więc przed użyciem wyniku zawsze sprawdź, czy dopasowanie istnieje.
Wynik zależy od flagi g. Bez niej dostajesz szczegóły pierwszego dopasowania: pod indeksem 0 cały dopasowany tekst, pod kolejnymi grupy z nawiasów, a we właściwościach index i groups jego pozycję i nazwane grupy. Z flagą g dostajesz prostą tablicę wszystkich dopasowań, bez grup.
Gdy potrzebujesz jednocześnie wszystkich dopasowań i ich grup, użyj matchAll(), które zwraca iterator. Jeśli chcesz tylko sprawdzić, czy wzorzec pasuje, prostsze jest regex.test(text), zwracające true lub false.
Składnia
#string.match(regexp)Parametry
#regexp
RegExp | string
Wyrażenie regularne. Napis zostanie zamieniony na wyrażenie przeznew RegExp(), więc znaki specjalne, np. kropka, zachowają specjalne znaczenie.
Więcej przykładów
#const text = 'Termin: 2026-10-15'
const result = text.match(/(?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2})/)
console.log(result.groups)
console.log(result.index)const text = 'Brak liczb w tym zdaniu'
const numbers = text.match(/\d+/g) ?? []
console.log(numbers.length)
const hashtags = 'Uczę się #javascript i #css'.match(/#\w+/g)
console.log(hashtags)const codePattern = /^[A-Z]{3}-\d{4}$/
console.log(codePattern.test('ABC-2026'))
console.log(codePattern.test('abc-2026'))
console.log('ABC-2026'.match(codePattern)[0])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
#- Wynik może być
null, a wtedyresult[0]rzuci błąd. Sprawdź dopasowanie przed użyciem albo przy fladzegzapisztext.match(re) ?? []. - Wyrażenie z flagą
gpamięta pozycję wlastIndex, więc wielokrotne wywołaniatest()na tym samym obiekcie potrafią dawać naprzemienne wyniki. Do samego sprawdzania używaj wyrażeń bezg. - Wszystkie dopasowania razem z grupami pobierzesz przez
[...text.matchAll(/(\d+) pkt/g)].
Powiązane hasła
#- RegExpWyrażenie regularne, czyli wzorzec do wyszukiwania, sprawdzania i zamiany fragmentów tekstu.
- String.prototype.replace()Zwraca nowy napis, w którym pierwsze dopasowanie wzorca (albo wszystkie, przy fladze g) zamieniono na inny tekst.
- String.prototype.split()Dzieli napis na tablicę fragmentów według separatora: znaku, tekstu lub wyrażenia regularnego.
- String.prototype.includes()Sprawdza, czy napis zawiera podany fragment tekstu. Zwraca true albo false i rozróżnia wielkość liter.
- String.prototype.indexOf()Zwraca indeks pierwszego wystąpienia podanego tekstu w napisie albo -1, gdy go nie ma.
- String.prototype.matchAll()Zwraca iterator wszystkich dopasowań wyrażenia regularnego, każde razem z grupami i pozycją w tekście.
Widzisz błąd albo brakuje przykładu? Napisz do nas.