Ce face RegExp.prototype.exec
exec returnează un tablou cu textul potrivit pe poziția 0 și grupurile pe pozițiile următoare, plus proprietățile index (poziția), input (textul) și groups (grupurile cu nume). Dacă nu găsește nimic, returnează null.
Cu indicatorul g, fiecare apel continuă de unde s-a oprit cel anterior, așa că poți parcurge toate potrivirile într-o buclă while. În cod nou, matchAll face același lucru mai simplu.
Parametri
| Parametru | Descriere |
|---|---|
sir |
Textul în care se caută. |
Ce returnează
Un tablou cu potrivirea sau null.
Exemple
Exemplul 1: O potrivire cu grupuri
const re = /(?<judet>[A-Z]{1,2}) (?<numar>\d{2,3}) (?<litere>[A-Z]{3})/;
const p = re.exec("Mașina are numărul IS 23 ABC.");
console.log(p[0]);
console.log(p.index);
console.log(p.groups.judet, p.groups.numar, p.groups.litere);
Rezultat
IS 23 ABC
19
IS 23 ABC
Exemplul 2: Toate potrivirile într-o buclă
const re = /#(\p{L}+)/gu;
const text = "Vacanță la #Sibiu și #Brașov, apoi #Constanța";
let p;
while ((p = re.exec(text)) !== null) {
console.log(p[1], "la poziția", p.index);
}
Rezultat
Sibiu la poziția 11
Brașov la poziția 21
Constanța la poziția 35
Greșeli frecvente
- Scrii bucla
whilecu o expresie fărăg.execgăsește mereu aceeași primă potrivire, iar bucla nu se mai oprește.
Comenzi înrudite
String.prototype.matchAll: Returnează toate potrivirile unei expresii regulate, fiecare cu grupurile și poziția ei.RegExp.prototype.test: Verifică dacă un text se potrivește cu o expresie regulată și returnează true sau false.String.prototype.match: Caută într-un text potriviri cu o expresie regulată și le returnează.