String JavaScript. Αντικατάσταση () Παράδειγμα με RegEx

Οι κανονικές εκφράσεις (ονομάζονται επίσης RegEx ή RegExp) είναι ένας ισχυρός τρόπος για την ανάλυση του κειμένου. Με το RegEx, μπορείτε να αντιστοιχίσετε συμβολοσειρές σε σημεία που ταιριάζουν με συγκεκριμένους χαρακτήρες (για παράδειγμα, JavaScript) ή μοτίβα (για παράδειγμα, NumberStringSymbol - 3a &).

Η .replaceμέθοδος χρησιμοποιείται σε συμβολοσειρές σε JavaScript για την αντικατάσταση τμημάτων συμβολοσειράς με χαρακτήρες. Χρησιμοποιείται συχνά έτσι:

const str = 'JavaScript'; const newStr = str.replace("ava", "-"); console.log(newStr); // J-Script 

Όπως μπορείτε να δείτε παραπάνω, η μέθοδος αντικατάστασης δέχεται δύο ορίσματα: τη συμβολοσειρά που θα αντικατασταθεί και με ποια συμβολοσειρά θα αντικατασταθεί.

Εδώ μπαίνει το Regex .

Η χρήση των .replaceπαραπάνω είναι περιορισμένη: οι χαρακτήρες που πρέπει να αντικατασταθούν είναι γνωστοί - "ava". Τι γίνεται αν μας ενδιαφέρει ένα μοτίβο; Ίσως ένας αριθμός, δύο γράμματα και η λέξη "foo" ή τρία σύμβολα που χρησιμοποιούνται μαζί;

Η .replaceμέθοδος που χρησιμοποιείται RegExμπορεί να το επιτύχει. RegExμπορεί να χρησιμοποιηθεί αποτελεσματικά για την αναδημιουργία μοτίβων. Έτσι συνδυάζοντας αυτό με .replaceμέσα μπορούμε να αντικαταστήσουμε μοτίβα και όχι μόνο ακριβείς χαρακτήρες.

Πώς να το χρησιμοποιήσετε RegExμε .replaceJavaScript

Για να χρησιμοποιήσετε το RegEx, το πρώτο όρισμα του replaceθα αντικατασταθεί με σύνταξη regex, για παράδειγμα /regex/. Αυτή η σύνταξη χρησιμεύει ως μοτίβο όπου οποιαδήποτε μέρη της συμβολοσειράς που ταιριάζουν θα αντικατασταθούν με το νέο υπόστρωμα.

Ακολουθεί ένα παράδειγμα:

// matches a number, some characters and another number const reg = /\d.*\d/ const str = "Java3foobar4Script" const newStr = str.replace(reg, "-"); console.log(newStr); // "Java-Script" 

Η συμβολοσειρά 3foobar4ταιριάζει με το regex /\d.*\d/, οπότε αντικαθίσταται.

Τι γίνεται αν θέλουμε να κάνουμε αντικαταστάσεις σε πολλά μέρη;

Regexήδη το προσφέρει με τη g(παγκόσμια) σημαία, και το ίδιο μπορεί να χρησιμοποιηθεί με replace. Δείτε πώς:

const reg = /\d{3}/g const str = "Java323Scr995ip4894545t"; const newStr = str.replace(reg, ""); console.log(newStr); // JavaScrip5t // 5 didn't pass the test :( 

Το regex αντιστοιχεί σε μέρη της συμβολοσειράς που είναι ακριβώς 3 διαδοχικοί αριθμοί. 323ταιριάζει, 995ταιριάζει, 489ταιριάζει και 454ταιριάζει. Αλλά το τελευταίο 5δεν ταιριάζει με το μοτίβο.

Το αποτέλεσμα είναι ότι JavaScrip5tδείχνει πώς τα μοτίβα ταιριάζουν σωστά και αντικαθίσταται με το νέο υπόστρωμα (μια κενή συμβολοσειρά).

Η σημαία θήκης - iμπορεί επίσης να χρησιμοποιηθεί. Αυτό σημαίνει ότι μπορείτε να αντικαταστήσετε μοτίβα που δεν είναι ευαίσθητα σε πεζά. Δείτε πώς χρησιμοποιείται:

const reg1 = /\dA/ const reg2 = /\dA/i const str = "Jav5ascript" const newStr1 = str.replace(reg1, "--"); const newStr2 = str.replace(reg2, "--"); console.log(newStr1) // Jav5ascript console.log(newStr2) // Jav--script 

..5a..δεν ταιριάζει με την πρώτη σύνταξη, επειδή το RegEx είναι από προεπιλογή ευαίσθητο σε πεζά. Αλλά με τη χρήση της iσημαίας, όπως φαίνεται στη δεύτερη σύνταξη, η συμβολοσειρά αντικαθίσταται όπως αναμένεται.

Πώς να χρησιμοποιήσετε το Split with Regular Expressions

splitχρησιμοποιεί επίσης RegEx. Αυτό σημαίνει ότι μπορείτε να χωρίσετε μια συμβολοσειρά όχι μόνο σε υποστρώματα που ταιριάζουν με τους ακριβείς χαρακτήρες, αλλά και τα μοτίβα.

Ακολουθεί μια γρήγορη ματιά:

const regex = /\d{2}a/; const str = "Hello54 How 64aare you"; console.log(str.split(regex)) // ["Hello54 How ", "are you"] 

Η συμβολοσειρά ήταν splitστο 64aεπειδή αυτό το substring ταιριάζει με το regex που καθορίζεται

Λάβετε υπόψη ότι η καθολική σημαία - g- in splitείναι άσχετη, σε αντίθεση με τη iσημαία και άλλες σημαίες. Αυτό συμβαίνει επειδή splitχωρίζει τη συμβολοσειρά στα διάφορα σημεία που αντιστοιχεί στο regex.

Τυλίγοντας

RegExκάνει replaceτις συμβολοσειρές στο JavaScript πιο αποτελεσματικές, ισχυρές και διασκεδαστικές.

Δεν περιορίζεστε μόνο σε ακριβείς χαρακτήρες, αλλά σε μοτίβα και πολλές αντικαταστάσεις ταυτόχρονα. Σε αυτό το άρθρο, έχουμε δει πώς λειτουργούν μαζί χρησιμοποιώντας μερικά παραδείγματα.

Χαιρετίζω στο RegEx;