Θα ήθελα να δημιουργήσω μια μέθοδο String.replaceAll()
σε JavaScript και σκέφτομαι ότι η χρήση μιας regex θα ήταν ο πιο σύντομος τρόπος για να το κάνω. Ωστόσο, δεν μπορώ να καταλάβω πώς να περάσω μια μεταβλητή σε μια regex. Μπορώ να το κάνω ήδη αυτό το οποίο θα αντικαταστήσει όλες τις περιπτώσεις του "B"
με το "A"
.
"ABABAB".replace(/B/g, "A");
Αλλά θέλω να κάνω κάτι τέτοιο:
String.prototype.replaceAll = function(replaceThis, withThis) {
this.replace(/replaceThis/g, withThis);
};
Αλλά προφανώς αυτό θα αντικαταστήσει μόνο το κείμενο "replaceThis"
...οπότε πώς μπορώ να περάσω αυτή τη μεταβλητή στη συμβολοσειρά regex μου;
Αντί να χρησιμοποιήσετε τη σύνταξη /regex/g
, μπορείτε να κατασκευάσετε ένα νέο αντικείμενο RegExp:
var replace = "regex";
var re = new RegExp(replace,"g");
Μπορείτε να δημιουργήσετε δυναμικά αντικείμενα regex με αυτόν τον τρόπο. Τότε θα κάνετε:
"mystring".replace(re, "newstring");
Αυτό:
var txt=new RegExp(pattern,attributes);
είναι ισοδύναμο με αυτό:
var txt=/pattern/attributes;
this.replace( new RegExp( replaceThis, 'g' ), withThis );