Η εντολή 'ή' στις κανονικές εκφράσεις JavaScript
Σε αυτό το μάθημα θα αναλύσουμε την εντολή
'|', η οποία αντιπροσωπεύει μια πιο
ισχυρή εκδοχή 'ή' σε σύγκριση
με την εντολή [ ]. Αυτή η εντολή επιτρέπει
τη διαίρεση της κανονικής έκφρασης σε πολλά μέρη.
Σε αυτήν την περίπτωση, το αναζητούμενο μπορεί να ταιριάζει είτε στο ένα
μέρος της κανονικής έκφρασης, είτε στο άλλο. Ας
δούμε παραδείγματα.
Παράδειγμα
Σε αυτό το παράδειγμα, το μοτίβο αναζήτησης είναι: τρία
γράμματα 'a' ή τρία γράμματα 'b':
let str = 'aaa bbb abb';
let res = str.replace(/a{3}|b{3}/g, '!');
Ως αποτέλεσμα, στη μεταβλητή θα καταγραφεί το ακόλουθο:
'! ! abb'
Παράδειγμα
Σε αυτό το παράδειγμα, το μοτίβο αναζήτησης είναι: τρία
γράμματα 'a' ή από 1 και πάνω
γράμματα 'b':
let str = 'aaa bbb bbbb bbbbb axx';
let res = str.replace(/a{3}|b+/g, '!');
Ως αποτέλεσμα, στη μεταβλητή θα καταγραφεί το ακόλουθο:
'! ! ! ! axx'
Παράδειγμα
Σε αυτό το παράδειγμα, το μοτίβο αναζήτησης είναι: ένα ή περισσότερα γράμματα ή τρία ψηφία:
let str = 'a ab abc 1 12 123';
let res = str.replace(/[a-z]+|\d{3}/g, '!');
Ως αποτέλεσμα, στη μεταβλητή θα καταγραφεί το ακόλουθο:
'! ! ! 1 12 !'
Παράδειγμα
Η κάθετη γραμμή μπορεί να διαιρέσει την κανονική έκφραση όχι σε δύο μέρη, αλλά σε οποιοδήποτε αριθμό μερών:
let str = 'aaa bbb ccc ddd';
let res = str.replace(/a+|b+|c+/g, '!');
Ως αποτέλεσμα, στη μεταβλητή θα καταγραφεί το ακόλουθο:
'! ! ! ddd'
Παράδειγμα
Εάν η κάθετη γραμμή βρίσκεται μέσα σε στρογγελά
παρενθέσεις, τότε το 'ή' λειτουργεί μόνο μέσα
σε αυτές τις παρενθέσεις.
Για παράδειγμα, ας βρούμε συμβολοσειρές σύμφωνα με το ακόλουθο
μοτίβο: στην αρχή υπάρχει είτε 'a',
είτε 'b' μία ή περισσότερες φορές, και στη συνέχεια
δύο γράμματα 'x':
let str = 'axx bxx bbxx exx';
let res = str.replace(/(a|b+)xx/g, '!');
Ως αποτέλεσμα, στη μεταβλητή θα καταγραφεί το ακόλουθο:
'! ! ! exx'
Πρακτικά προβλήματα
Δίνεται μια συμβολοσειρά:
let str = 'aeeea aeea aea axa axxa axxxa';
Γράψτε μια κανονική έκφραση που θα βρει συμβολοσειρές
σύμφωνα με το μοτίβο: στα άκρα υπάρχουν γράμματα 'a',
και ανάμεσά τους - είτε το γράμμα 'e' οποιονδήποτε
αριθμό φορών είτε το γράμμα 'x' οποιονδήποτε
αριθμό φορών.
Δίνεται μια συμβολοσειρά:
let str = 'aeeea aeea aea axa axxa axxxa';
Γράψτε μια κανονική έκφραση που θα βρει συμβολοσειρές
σύμφωνα με το μοτίβο: στα άκρα υπάρχουν γράμματα 'a',
και ανάμεσά τους - είτε το γράμμα 'e' δύο φορές
είτε το γράμμα 'x' οποιονδήποτε αριθμό φορών.