Η μέθοδος exec στις κανονικές εκφράσεις JavaScript
Η μέθοδος exec πραγματοποιεί αναζήτηση σε
μια συμβολοσειρά. Το αποτέλεσμα επιστρέφει την
ευρεθείσα υποσυμβολοσειρά και τις ομάδες καταλής (capturing groups) της.
Καθώς κάθε επόμενη κλήση αυτής της μεθόδου
θα ξεκινά την αναζήτηση από το σημείο
στο οποίο τελείωσε η προηγούμενη
ευρεθείσα υποσυμβολοσειρά.
Ας δούμε ένα παράδειγμα. Ας υποθέσουμε ότι έχουμε την ακόλουθη συμβολοσειρά:
javascriptlet str = '12 34 56';
Ας υποθέσουμε ότι έχουμε την ακόλουθη κανονική έκφραση:
javascriptlet reg = /\d+/g;
Ας καλέσουμε διαδοχικά τη μέθοδό μας για τη συμβολοσειρά μας:
javascriptlet 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:
javascriptlet res4 = reg.exec(str);
console.log(res4); // null
Αυτή η ιδιαιτερότητα της μεθόδου είναι βολική να χρησιμοποιηθεί σε έναν βρόχο:
javascriptlet str = '12 34 56';
let reg = /\d+/g;
let res;
while (res = reg.exec(str)) {
console.log(res); // [12], [34], [56]
}
Μπορείτε να βρείτε όχι μόνο την αντιστοίχιση, αλλά και να την αποσυνθέσετε σε ομάδες καταλής:
javascriptlet 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]
}
Δίνεται η ακόλουθη συμβολοσειρά:
javascriptlet str = '12:37:57 15:48:58 17:59:59';
Βρείτε σε αυτήν όλες τις υποσυμβολοσειρές με ώρα και για κάθε μία που βρέθηκε, αποσυνθέστε τις ώρες, τα λεπτά και τα δευτερόλεπτα σε ομάδες καταλής.