Javascript String matchAll ()

Metóda JavaScript String matchAll () vracia iterátor výsledkov zhody reťazca s regulárnym výrazom.

Syntax matchAll()metódy je:

 str.matchAll(regexp)

Tu strje reťazec.

Parametre matchAll ()

matchAll()Metóda berie v:

  • regexp - objekt s regulárnym výrazom (Argument sa implicitne prevedie na objekt, ktorý RegExpnie je RegExpobjektom)

Poznámka: Ak RegExpobjekt nemá /gvlajku, TypeErrorbude vyhodené a.

Vrátiť hodnotu z matchAll ()

  • Vráti iterátor obsahujúci zhody vrátane skupín zachytávania.

Poznámka : Každá položka vráteného iterátora bude mať nasledujúce ďalšie vlastnosti:

  • groups - Objekt pomenovaných skupín zachytávajúcich súbory, ktorých názvy sú kľúčmi a hodnoty ako zachytené zápasy.
  • index - Index vyhľadávania, kde sa našiel výsledok.
  • input - Kópia vyhľadávacieho reťazca.

Príklad 1: Použitie matchAll ()

 const string = "I am learning JavaScript not Java."; const re = /Java(a-z)*/gi; let result = string.matchAll(re); for (match of result) ( console.log(match); )

Výkon

 ('JavaScript', index: 14, vstup: 'Učím sa JavaScript, nie Java.', Skupiny: nedefinované) ('Java', index: 29, vstup: 'Učím sa JavaScript, nie Java.', Skupiny: nedefinované)

Tu je vrátený iterátor iterovaný pomocou for… ofslučky.

Príklad 2: Použitie matchAll na zachytenie skupín

 const string = "My name is Albert. YOUR NAME is Soyuj."; // expression matches case-insensitive "name is"+ any alphabets till period (.) // using named capturing groups const re = /namesiss(?(a-zA-Z)+)./gi; let found = string.matchAll(re); for (const match of found)( console.log(`Found "$(match(0))" at index $(match.index). Captured name = $(match.groups('name'))`) )

Výkon

Nájdené „meno je Albert“. v indexe 3. Zachytené meno = Albert Nájdené „NÁZOV je Sojuj.“ v indexe 24. Zachytené meno = Sojuj

Tu sme použili regulárny výraz, ktorý sa zhoduje s určitou časťou reťazca. Určité skupiny v zápase dokážeme zachytiť pomocou matchAll()lepších ako match().

Odporúčané čítanie: Zhoda reťazca JavaScript ()

Zaujímavé články...