Ομάδες χαρακτήρων στις κανονικές εκφράσεις JavaScript
Υπάρχουν ειδικές εντολές που επιτρέπουν την
επιλογή αμέσως ολόκληρων ομάδων χαρακτήρων. Η εντολή
\d σημαίνει ψηφίο από 0 έως 9.
Η εντολή \w δηλώνει ψηφίο, λατινικό
γράμμα ή τον χαρακτήρα υπογράμμισης. Η εντολή \s
δηλώνει κενό ή χαρακτήρα κενού:
κενό, αλλαγή γραμμής, ταμπουλάτορ. Μπορείτε
να αντιστρέψετε την τιμή της εντολής, γράφοντας κεφαλαίο
γράμμα: για παράδειγμα, εάν \d - ψηφίο,
τότε \D - όχι ψηφίο.
Παράδειγμα
Ας βρούμε όλα τα ψηφία:
let str = '1 12 123';
let res = str.replace(/\d/g, '!');
Στο αποτέλεσμα στη μεταβλητή θα γραφτεί το εξής:
'! !! !!!'
Παράδειγμα
Οι τελεστές επανάληψης θεωρούν τις εντολές-ομάδες
ως ένα σύνολο, δηλαδή οι ομαδοποιητικές αγκύλες
δεν είναι απαραίτητες. Στο επόμενο παράδειγμα το μοτίβο αναζήτησης
φαίνεται ως εξής: ψηφίο από 0 έως 9
μία ή περισσότερες φορές:
let str = '1 12 123 abc @@@';
let res = str.replace(/\d+/g, '!');
Στο αποτέλεσμα στη μεταβλητή θα γραφτεί το εξής:
'! ! ! abc @@@'
Παράδειγμα
Στο επόμενο παράδειγμα το μοτίβο αναζήτησης φαίνεται
ως εξής: οτιδήποτε μία ή περισσότερες φορές,
αλλά όχι ψηφίο από 0 έως 9:
let str = '123abc3@@';
let res = str.replace(/\D+/g, '!');
Στο αποτέλεσμα στη μεταβλητή θα γραφτεί το εξής:
'123!3!'
Παράδειγμα
Σε αυτό το παράδειγμα το μοτίβο αναζήτησης φαίνεται ως εξής: χαρακτήρας κενού μία φορά:
let str = '1 12 123 abc @@@';
let res = str.replace(/\s/g, '!');
Στο αποτέλεσμα στη μεταβλητή θα γραφτεί το εξής:
'1!12!123!abc!@@@'
Παράδειγμα
Σε αυτό το παράδειγμα το μοτίβο αναζήτησης φαίνεται ως εξής:
ΟΧΙ χαρακτήρας κενού μία ή περισσότερες φορές.
Όλες οι υποσυμβολοσειρές, που χωρίζονται με κενά, θα αντικατασταθούν
με '!':
let str = '1 12 123 abc @@@';
let res = str.replace(/\S+/g, '!');
Στο αποτέλεσμα στη μεταβλητή θα γραφτεί το εξής:
'! ! ! ! !'
Παράδειγμα
Σε αυτό το παράδειγμα το μοτίβο αναζήτησης φαίνεται ως εξής:
ψηφίο ή γράμμα μία ή περισσότερες φορές.
Όλες οι υποσυμβολοσειρές, που αποτελούνται από ψηφία και γράμματα,
θα αντικατασταθούν με '!':
let str = '1 12 123a Abc @@@';
let res = str.replace(/\w+/g, '!');
Στο αποτέλεσμα στη μεταβλητή θα γραφτεί το εξής:
'! ! ! ! @@@'
Παράδειγμα
Σε αυτό το παράδειγμα το μοτίβο αναζήτησης φαίνεται ως εξής:
ΟΧΙ ψηφίο και ΟΧΙ γράμμα μία ή περισσότερες φορές.
Σύμφωνα με αυτόν τον ορισμό στην περίπτωσή μας εμπίπτει
'@@@' και όλα τα κενά (αφού και αυτά
δεν είναι ψηφία ούτε γράμματα). Προσέξτε
ότι στο τέλος ένα '!' - σε αυτό
μετατράπηκε η συμβολοσειρά ' @@@' - με
κενό μπροστά:
let str = '1 12 123 Abc @@@';
let res = str.replace(/\W+/g, '!');
Στο αποτέλεσμα στη μεταβλητή θα γραφτεί το εξής:
'1!12!123!Abc!'
Πρακτικά προβλήματα
Δίνεται συμβολοσειρά:
let str = 'a1a a2a a3a a4a a5a aba aca';
Γράψτε μια κανονική έκφραση που θα βρει συμβολοσειρές,
στις οποίες στα άκρα υπάρχουν γράμματα 'a',
και ανάμεσά τους ένα ψηφίο.
Δίνεται συμβολοσειρά:
let str = 'a1a a22a a333a a4444a a55555a aba aca';
Γράψτε μια κανονική έκφραση που θα βρει συμβολοσειρές,
στις οποίες στα άκρα υπάρχουν γράμματα 'a',
και ανάμεσά τους οποιοσδήποτε αριθμός ψηφίων.
Δίνεται συμβολοσειρά:
let str = 'aa a1a a22a a333a a4444a a55555a aba aca';
Γράψτε μια κανονική έκφραση που θα βρει συμβολοσειρές,
στις οποίες στα άκρα υπάρχουν γράμματα 'a',
και ανάμεσά τους οποιοσδήποτε αριθμός ψηφίων (συμπεριλαμβανομένου
και του μηδενός ψηφίων, δηλαδή η συμβολοσειρά 'aa').
Δίνεται συμβολοσειρά:
let str = 'avb a1b a2b a3b a4b a5b abb acb';
Γράψτε μια κανονική έκφραση που θα βρει συμβολοσειρές
του ακόλουθου τύπου: στα άκρα υπάρχουν γράμματα
'a' και 'b', και ανάμεσά τους - όχι
αριθμός και όχι κενό.
Δίνεται συμβολοσειρά:
let str = 'ave a#b a2b a$b a4b a5b a-b acb';
Γράψτε μια κανονική έκφραση που θα βρει συμβολοσειρές
του ακόλουθου τύπου: στα άκρα υπάρχουν γράμματα
'a' και 'b', και ανάμεσά τους - όχι
γράμμα, όχι ψηφίο και όχι κενό.
Δίνεται συμβολοσειρά:
let str = 'ave a#a a2a a$a a4a a5a a-a aca';
Γράψτε μια κανονική έκφραση που θα αντικαταστήσει όλα τα κενά
με '!'.