Η μέθοδος exec στις κανονικές εκφράσεις JavaScript
Η μέθοδος exec πραγματοποιεί αναζήτηση σε
μια συμβολοσειρά. Το αποτέλεσμα επιστρέφει την
ευρεθείσα υποσυμβολοσειρά και τις ομάδες καταλής (capturing groups) της.
Καθώς κάθε επόμενη κλήση αυτής της μεθόδου
θα ξεκινά την αναζήτηση από το σημείο
στο οποίο τελείωσε η προηγούμενη
ευρεθείσα υποσυμβολοσειρά.
Ας δούμε ένα παράδειγμα. Ας υποθέσουμε ότι έχουμε την ακόλουθη συμβολοσειρά:
let str = '12 34 56';
Ας υποθέσουμε ότι έχουμε την ακόλουθη κανονική έκφραση:
let reg = /\d+/g;
Ας καλέσουμε διαδοχικά τη μέθοδό μας για τη συμβολοσειρά μας:
let res1 = reg.exec(str);
console.log(res1[0]); // 12
let res2 = reg.exec(str);
console.log(res2[0]); // 34
let res3 = reg.exec(str);
console.log(res3[0]); // 56
Μετά από τρεις κλήσεις, δεδομένου ότι στη
συμβολοσειρά μας δεν υπάρχουν άλλες αντιστοιχίες με την κανονική έκφραση,
η επόμενη κλήση της μεθόδου θα επιστρέψει
null:
let res4 = reg.exec(str);
console.log(res4); // null
Αυτή η ιδιαιτερότητα της μεθόδου είναι βολική να χρησιμοποιηθεί σε έναν βρόχο:
let str = '12 34 56';
let reg = /\d+/g;
let res;
while (res = reg.exec(str)) {
console.log(res); // [12], [34], [56]
}
Μπορείτε να βρείτε όχι μόνο την αντιστοίχιση, αλλά και να την αποσυνθέσετε σε ομάδες καταλής:
let str = '12 34 56';
let reg = /(\d)(\d)/g;
let res;
while (res = reg.exec(str)) {
console.log(res); // [12, 1, 2], [34, 3, 4], [56, 5, 6]
}
Δίνεται η ακόλουθη συμβολοσειρά:
let str = '12:37:57 15:48:58 17:59:59';
Βρείτε σε αυτήν όλες τις υποσυμβολοσειρές με ώρα και για κάθε μία που βρέθηκε, αποσυνθέστε τις ώρες, τα λεπτά και τα δευτερόλεπτα σε ομάδες καταλής.