Αντίστροφη πλάγια γραμμή σε συμβολοσειρές κανονικών εκφράσεων στην JavaScript
Σε συμβολοσειρές με κανονικές εκφράσεις πρέπει να αποφεύγουμε (στην πραγματικότητα να διπλασιάζουμε) τις αντίστροφες πλάγιες γραμμές. Ας δούμε ένα παράδειγμα. Ας υποθέσουμε ότι έχουμε την ακόλουθη συμβολοσειρά:
let str = 'xyz';
Ας υποθέσουμε ότι έχουμε τον ακόλουθο κώδικα με μια κανονική έκφραση:
let reg = /\w+/;
let res = str.match(reg);
Ας μετατρέψουμε την κανονική έκφραση σε συμβολοσειρά. Σε αυτήν την περίπτωση, θα προκύψει ένα πρόβλημα με την αντίστροφη πλάγια γραμμή:
let reg = new RegExp('\w+'); // δεν λειτουργεί
let res = str.match(reg);
Για να λύσουμε το πρόβλημα διπλασιάζουμε την αντίστροφη πλάγια γραμμή:
let reg = new RegExp('\\w+'); // λειτουργεί
let res = str.match(reg);
Πρακτικά προβλήματα
Μετατρέψτε την κανονική έκφραση σε συμβολοσειρά:
let str = 'x1y x12y x123y';
let reg = /x\d+y/;
let res = str.replace(reg, '!');
Μετατρέψτε την κανονική έκφραση σε συμβολοσειρά:
let str = 'x.y xay xby';
let reg = /x\.y/;
let res = str.replace(reg, '!');
Μετατρέψτε την κανονική έκφραση σε συμβολοσειρά:
let str = 'x\\y';
let reg = /x\\y/;
let res = str.replace(reg, '!');