Σγουρές αγκύλες στις κανονικές εκφράσεις JavaScript

Οι τελεστές '+', '*', '?' είναι χρήσιμοι, ωστόσο, δεν μπορούν να καθορίσουν συγκεκριμένο αριθμό επαναλήψεων. Σε αυτή την περίπτωση θα σας βοηθήσει ο τελεστής {}.

Λειτουργεί ως εξής: {5} - πέντε επαναλήψεις, {2,5} – επαναλαμβάνεται από δύο έως πέντε (και τα δύο συμπεριλαμβανομένων), {2,} - επαναλαμβάνεται δύο ή περισσότερες φορές. Παρατηρήστε ότι αυτή η επιλογή - {,2} - δεν υπάρχει. Δείτε τα παραδείγματα:

Παράδειγμα

Σε αυτό το παράδειγμα, το μοτίβο αναζήτησης μοιάζει με αυτό: γράμμα 'x', γράμμα 'a' μία ή δύο φορές, γράμμα 'x':

javascriptlet str = 'xx xax xaax xaaax';
let res = str.replace(/xa{1,2}x/g, '!');

Ως αποτέλεσμα, στη μεταβλητή θα καταγραφεί το εξής:

javascript'xx ! ! xaaax'

Παράδειγμα

Σε αυτό το παράδειγμα, το μοτίβο αναζήτησης μοιάζει με αυτό: γράμμα 'x', γράμμα 'a' δύο φορές και περισσότερες, γράμμα 'x':

javascriptlet str = 'xx xax xaax xaaax';
let res = str.replace(/xa{2,}x/g, '!');

Ως αποτέλεσμα, στη μεταβλητή θα καταγραφεί το εξής:

javascript'xx xax ! !'

Παράδειγμα

Σε αυτό το παράδειγμα, το μοτίβο αναζήτησης μοιάζει με αυτό: γράμμα 'x', γράμμα 'a' τρεις φορές, γράμμα 'x':

javascriptlet str = 'xx xax xaax xaaax';
let res = str.replace(/xa{3}x/g, '!');

Ως αποτέλεσμα, στη μεταβλητή θα καταγραφεί το εξής:

javascript'xx xax xaax !'

Παράδειγμα

Σε αυτό το παράδειγμα, το μοτίβο αναζήτησης μοιάζει με αυτό: γράμμα 'a' δέκα φορές:

javascriptlet str = 'aaa aaaaaaaaaa aaa';
let res = str.replace(/a{10}/g, '!');

Ως αποτέλεσμα, στη μεταβλητή θα καταγραφεί το εξής:

javascript'aaa ! aaa'

Παράδειγμα

Σε αυτό το παράδειγμα, ο συγγραφέας του κώδικα ήθελε αυτό το μοτίβο: γράμμα 'x', γράμμα 'a' τρεις φορές και λιγότερες, γράμμα 'x', αλλά, δυστυχώς, αυτό - {,3} - δεν λειτουργεί. Πρέπει να καθοριστεί ρητά:

javascriptlet str = 'xx xax xaax xaaax';
let res = str.replace(/xa{1,3}x/g, '!');

Ως αποτέλεσμα, στη μεταβλητή θα καταγραφεί το εξής:

javascript'xx ! ! !'

Παράδειγμα

Το μηδέν είναι επίσης επιτρεπτό:

javascriptlet str = 'xx xax xaax xaaax';
let res = str.replace(/xa{0,3}x/g, '!');

Ως αποτέλεσμα, στη μεταβλητή θα καταγραφεί το εξής:

javascript'! ! ! !'

Πρακτικές ασκήσεις

Задание 1

Δίνεται μια συμβολοσειρά:

javascriptlet str = 'aa aba abba abbba abbbba abbbbba';

Γράψτε μια κανονική έκφραση που θα βρει τις συμβολοσειρές 'abba', 'abbba', 'abbbba' και μόνο αυτές.

Задание 2

Δίνεται μια συμβολοσειρά:

javascriptlet str = 'aa aba abba abbba abbbba abbbbba';

Γράψτε μια κανονική έκφραση που θα βρει συμβολοσειρές της μορφής 'aba', στις οποίες το 'b' εμφανίζεται λιγότερες από 3 φορές (συμπεριλαμβανομένων).

Задание 3

Δίνεται μια συμβολοσειρά:

javascriptlet str = 'aa aba abba abbba abbbba abbbbba';

Γράψτε μια κανονική έκφραση που θα βρει συμβολοσειρές της μορφής 'aba', στις οποίες το 'b' εμφανίζεται περισσότερες από 4 φορές (συμπεριλαμβανομένων).