JavaScriptNapisy

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) albo null, gdy nic nie pasuje.
Zmienia oryginał
Nie
Na tej stronie

Przykład

#
JavaScript
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/))
Konsola
['12', '30', '13', '45']
['30 pkt', '30']
null

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

#
Składnia
string.match(regexp)

Parametry

#
  • regexp

    RegExp | string

    Wyrażenie regularne. Napis zostanie zamieniony na wyrażenie przez new RegExp(), więc znaki specjalne, np. kropka, zachowają specjalne znaczenie.

Więcej przykładów

#
Nazwane grupy i pozycja dopasowania
JavaScript
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)
Konsola
{ year: '2026', month: '10', day: '15' }
8
Brak dopasowania i bezpieczne liczenie
JavaScript
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)
Konsola
0
['#javascript', '#css']
Sprawdzanie formatu przez test()
JavaScript
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])
Konsola
true
false
ABC-2026

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 wtedy result[0] rzuci błąd. Sprawdź dopasowanie przed użyciem albo przy fladze g zapisz text.match(re) ?? [].
  • Wyrażenie z flagą g pamięta pozycję w lastIndex, więc wielokrotne wywołania test() na tym samym obiekcie potrafią dawać naprzemienne wyniki. Do samego sprawdzania używaj wyrażeń bez g.
  • Wszystkie dopasowania razem z grupami pobierzesz przez [...text.matchAll(/(\d+) pkt/g)].

Powiązane hasła

#

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