JavaScript String matchAll () -metoden returnerar en iterator av resultat för att matcha en sträng mot ett reguljärt uttryck.
Syntaxen för matchAll()
metoden är:
str.matchAll(regexp)
Här str
är en sträng.
matchAll () -parametrar
Den matchAll()
metod tar in:
- regexp - Ett objekt med reguljärt uttryck (Argumentet omvandlas implicit till
RegExp
om det är ett icke-RegExp
objekt)
Obs: Om RegExp
objektet inte har /g
flaggan TypeError
kastas en.
Returvärde från matchAll ()
- Returnerar en iterator som innehåller matchningarna inklusive fånggrupperna.
Obs! Den returnerade iteratorn för varje artikel har följande ytterligare egenskaper:
groups
- Ett objekt med namngivna fånggrupper med nycklar som namn och värden som de fångade matchningarna.index
- Sökindexet där resultatet hittades.input
- En kopia av söksträngen.
Exempel 1: Använda 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); )
Produktion
('JavaScript', index: 14, input: 'Jag lär mig JavaScript inte Java.', Grupper: odefinierad) ('Java', index: 29, input: 'Jag lär mig JavaScript inte Java.', Grupper: undefined)
Här upprepas den returnerade iteratorn med hjälp av for… of
slingan.
Exempel 2: Använd matchAll för att fånga grupper
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'))`) )
Produktion
Hittade "namnet är Albert." vid index 3. Fångat namn = Albert Hittade "NAMN är Soyuj." vid index 24. Fångat namn = Soyuj
Här har vi använt ett reguljärt uttryck för att matcha en viss del av strängen. Vi kan fånga vissa grupper i matchen med matchAll()
bättre än match()
.
Rekommenderad läsning: JavaScript-strängmatchning ()