Σγουρές αγκύλες στις κανονικές εκφράσεις JavaScript
Οι τελεστές '+', '*', '?'
είναι χρήσιμοι, ωστόσο, δεν μπορούν να καθορίσουν
συγκεκριμένο αριθμό επαναλήψεων. Σε αυτή την περίπτωση
θα σας βοηθήσει ο τελεστής {}.
Λειτουργεί ως εξής: {5}
- πέντε επαναλήψεις, {2,5} – επαναλαμβάνεται
από δύο έως πέντε (και τα δύο συμπεριλαμβανομένων), {2,}
- επαναλαμβάνεται δύο ή περισσότερες φορές. Παρατηρήστε
ότι αυτή η επιλογή - {,2}
- δεν υπάρχει. Δείτε τα παραδείγματα:
Παράδειγμα
Σε αυτό το παράδειγμα, το μοτίβο αναζήτησης μοιάζει με αυτό:
γράμμα 'x', γράμμα 'a' μία
ή δύο φορές, γράμμα 'x':
let str = 'xx xax xaax xaaax';
let res = str.replace(/xa{1,2}x/g, '!');
Ως αποτέλεσμα, στη μεταβλητή θα καταγραφεί το εξής:
'xx ! ! xaaax'
Παράδειγμα
Σε αυτό το παράδειγμα, το μοτίβο αναζήτησης μοιάζει με αυτό:
γράμμα 'x', γράμμα 'a' δύο
φορές και περισσότερες, γράμμα 'x':
let str = 'xx xax xaax xaaax';
let res = str.replace(/xa{2,}x/g, '!');
Ως αποτέλεσμα, στη μεταβλητή θα καταγραφεί το εξής:
'xx xax ! !'
Παράδειγμα
Σε αυτό το παράδειγμα, το μοτίβο αναζήτησης μοιάζει με αυτό:
γράμμα 'x', γράμμα 'a' τρεις
φορές, γράμμα 'x':
let str = 'xx xax xaax xaaax';
let res = str.replace(/xa{3}x/g, '!');
Ως αποτέλεσμα, στη μεταβλητή θα καταγραφεί το εξής:
'xx xax xaax !'
Παράδειγμα
Σε αυτό το παράδειγμα, το μοτίβο αναζήτησης μοιάζει με αυτό:
γράμμα 'a' δέκα φορές:
let str = 'aaa aaaaaaaaaa aaa';
let res = str.replace(/a{10}/g, '!');
Ως αποτέλεσμα, στη μεταβλητή θα καταγραφεί το εξής:
'aaa ! aaa'
Παράδειγμα
Σε αυτό το παράδειγμα, ο συγγραφέας του κώδικα ήθελε αυτό το μοτίβο:
γράμμα 'x', γράμμα 'a' τρεις
φορές και λιγότερες, γράμμα 'x',
αλλά, δυστυχώς, αυτό - {,3} - δεν λειτουργεί.
Πρέπει να καθοριστεί ρητά:
let str = 'xx xax xaax xaaax';
let res = str.replace(/xa{1,3}x/g, '!');
Ως αποτέλεσμα, στη μεταβλητή θα καταγραφεί το εξής:
'xx ! ! !'
Παράδειγμα
Το μηδέν είναι επίσης επιτρεπτό:
let str = 'xx xax xaax xaaax';
let res = str.replace(/xa{0,3}x/g, '!');
Ως αποτέλεσμα, στη μεταβλητή θα καταγραφεί το εξής:
'! ! ! !'
Πρακτικές ασκήσεις
Δίνεται μια συμβολοσειρά:
let str = 'aa aba abba abbba abbbba abbbbba';
Γράψτε μια κανονική έκφραση που θα βρει τις συμβολοσειρές
'abba', 'abbba', 'abbbba'
και μόνο αυτές.
Δίνεται μια συμβολοσειρά:
let str = 'aa aba abba abbba abbbba abbbbba';
Γράψτε μια κανονική έκφραση που θα βρει συμβολοσειρές
της μορφής 'aba', στις οποίες το 'b' εμφανίζεται
λιγότερες από 3 φορές (συμπεριλαμβανομένων).
Δίνεται μια συμβολοσειρά:
let str = 'aa aba abba abbba abbbba abbbbba';
Γράψτε μια κανονική έκφραση που θα βρει συμβολοσειρές
της μορφής 'aba', στις οποίες το 'b' εμφανίζεται
περισσότερες από 4 φορές (συμπεριλαμβανομένων).