Στροφή με κανονικές εκφράσεις στην JavaScript
Οι κανονικές εκφράσεις μπορούν να αναπαρασταθούν ως συμβολοσειρές. Αυτό είναι βολικό στην περίπτωση που χρειάζεται να κάνετε εισαγωγές μεταβλητών στις κανονικές εκφράσεις, ή να τις δημιουργήσετε δυναμικά.
Ας δούμε ένα παράδειγμα. Ας υποθέσουμε ότι έχουμε την ακόλουθη συμβολοσειρά:
let str = 'img.png';
Ας υποθέσουμε ότι σε αυτήν τη συμβολοσειρά εφαρμόζουμε την ακόλουθη κανονική έκφραση:
let reg = /\.(png|jpg)$/;
let res = str.match(reg);
Ας ξαναγράψουμε αυτήν την κανονική έκφραση
ως συμβολοσειρά. Αυτό γίνεται χρησιμοποιώντας
το ειδικό αντικείμενο RegExp:
let reg = new RegExp('\.(png|jpg)$');
let res = str.match(reg);
Ας βγάλουμε τώρα ένα μέρος της κανονικής έκφρασης σε μια μεταβλητή και ας το εισάγουμε χρησιμοποιώντας συνένωση:
let pat = 'png|jpg';
let reg = new RegExp('\.(' + pat + ')$');
let res = str.match(reg);
Και τώρα ας εισάγουμε τη μεταβλητή χρησιμοποιώντας πρότυπες συμβολοσειρές:
let pat = 'png|jpg';
let reg = new RegExp(`\.(${pat})$`);
let res = str.match(reg);
Και τώρα ας δημιουργήσουμε ένα μέρος της κανονικής έκφρασης από έναν πίνακα:
let exts = ['png', 'jpg'];
let pat = exts.join('|');
let reg = new RegExp(`\.(${pat})$`);
let res = str.match(reg);
Πρακτικά προβλήματα
Βγάλτε τα ονόματα των ζωνών domain σε μια ξεχωριστή μεταβλητή:
let reg = /^[a-z]+\.(ru|by|ua)$/;
let res = reg.test(str);
Τροποποιήστε το προηγούμενο πρόβλημα λαμβάνοντας υπόψη ότι οι ζώνες domain αποθηκεύονται ως πίνακας:
let arr = ['ru', 'by', 'ua'];