⊗jsSpREESCh 99 of 294 menu

Αποφυγή Ειδικών Χαρακτήρων στις Κανονικές Εκφράσεις JavaScript

Ας υποθέσουμε ότι θέλουμε ένας ειδικός χαρακτήρας να αντιπροσωπεύει τον εαυτό του. Για αυτό πρέπει να τον αποφύγουμε χρησιμοποιώντας την ανάστροφη πλάγια γραμμή. Ας δούμε μερικά παραδείγματα.

Παράδειγμα

Στο επόμενο παράδειγμα, ο συγγραφέας της κανονικής έκφρασης ήθελε το μοτίβο αναζήτησης να μοιάζει με αυτό: γράμμα 'a', μετά συν '+', μετά γράμμα 'x'. Ωστόσο, ο συγγραφέας του κώδικα δεν απέφυγε τον χαρακτήρα '+' και επομένως το μοτίβο αναζήτησης στην πραγματικότητα μοιάζει με αυτό: γράμμα 'a' μία ή περισσότερες φορές, μετά γράμμα 'x':

let str = 'a+x ax aax aaax'; let res = str.replace(/a+x/g, '!');

Ως αποτέλεσμα, στη μεταβλητή θα καταγραφεί το ακόλουθο:

'a+x ! ! !'

Παράδειγμα

Και τώρα ο συγγραφέας απέφυγε το συν με την ανάστροφη πλάγια γραμμή. Τώρα το μοτίβο αναζήτησης μοιάζει όπως πρέπει: γράμμα 'a', μετά συν '+', μετά γράμμα 'x'.

let str = 'a+x ax aax aaax'; let res = str.replace(/a\+x/g, '!');

Ως αποτέλεσμα, στη μεταβλητή θα καταγραφεί το ακόλουθο:

'! ax aax aaax'

Παράδειγμα

Σε αυτό το παράδειγμα, το μοτίβο μοιάζει με αυτό: γράμμα 'a', μετά τελεία '.', μετά γράμμα 'x':

let str = 'a.x abx azx'; let res = str.replace(/a\.x/g, '!');

Ως αποτέλεσμα, στη μεταβλητή θα καταγραφεί το ακόλουθο:

'! abx azx'

Παράδειγμα

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

let str = 'a.x abx azx'; let res = str.replace(/a.x/g, '!');

Ως αποτέλεσμα, στη μεταβλητή θα καταγραφεί το ακόλουθο:

'! ! !'

Παρατήρηση

Παρατηρήστε ότι αν ξεχάσετε την ανάστροφη πλάγια γραμμή για την τελεία (όταν θα πρέπει να αντιπροσωπεύει τον εαυτό της) - αυτό μπορεί κανείς να μην το παρατηρήσει:

'a.x'.replace(/a.x/g, '!'); // επιστρέφει '!', όπως θέλαμε

Οπτικά λειτουργεί σωστά (καθώς η τελεία αντιπροσωπεύει οποιονδήποτε χαρακτήρα, συμπεριλαμβανομένης και της συνηθισμένης τελείας '.'). Αλλά αν αλλάξουμε τη συμβολοσειρά, στην οποία γίνονται οι αντικαταστάσεις - θα δούμε το λάθος μας:

'a.x abx azx'.replace(/a.x/g, '!'); // επιστρέφει '! ! !', αλλά αναμενόταν '! abx azx'

Κατάλογος ειδικών συμβόλων και συνηθισμένων

Αν αποφύγετε έναν συνηθισμένο χαρακτήρα - τίποτα τραγικό δεν θα συμβεί - θα συνεχίσει να αντιπροσωπεύει τον εαυτό του. Εξαίρεση - οι αριθμοί, δεν μπορούν να αποφευχθούν.

Συχνά προκύπτει αμφιβολία, εάν ένας συγκεκριμένος χαρακτήρας είναι ειδικός. Μερικοί φτάνουν στο σημείο να αποφεύγουν όλους τους ύποπτους χαρακτήρες ο ένας μετά τον άλλο. Ωστόσο, αυτή είναι κακή πρακτική (γεμίζει την κανονική έκφραση με ανάστροφες πλάγιες γραμμές).

Είναι ειδικοί χαρακτήρες: $ ^ . * + ? \ / {} [] () |

Δεν είναι ειδικοί χαρακτήρες: @ : , ' " ; - _ = < > % # ~ `& !

Πρακτικές Ασκήσεις

Δίνεται συμβολοσειρά:

let str = 'a.a aba aea';

Γράψτε μια κανονική έκφραση που θα βρει τη συμβολοσειρά 'a.a', χωρίς να πιάσει τις υπόλοιπες.

Δίνεται συμβολοσειρά:

let str = '2+3 223 2223';

Γράψτε μια κανονική έκφραση που θα βρει τη συμβολοσειρά '2+3', χωρίς να πιάσει τις υπόλοιπες.

Δίνεται συμβολοσειρά:

let str = '23 2+3 2++3 2+++3 345 567';

Γράψτε μια κανονική έκφραση που θα βρει τις συμβολοσειρές '2+3', '2++3', '2+++3', χωρίς να πιάσει τις υπόλοιπες (+ μπορεί να είναι οποιοσδήποτε αριθμός).

Δίνεται συμβολοσειρά:

let str = '23 2+3 2++3 2+++3 445 677';

Γράψτε μια κανονική έκφραση που θα βρει τις συμβολοσειρές '23', '2+3', '2++3', '2+++3', χωρίς να πιάσει τις υπόλοιπες.

Δίνεται συμβολοσειρά:

let str = '*+ *q+ *qq+ *qqq+ *qqq qqq+';

Γράψτε μια κανονική έκφραση που θα βρει τις συμβολοσειρές '*q+', '*qq+', '*qqq+', χωρίς να πιάσει τις υπόλοιπες.

Δίνεται συμβολοσειρά:

let str = '[abc] {abc} abc (abc) [abc]';

Γράψτε μια κανονική έκφραση που θα βρει τις συμβολοσειρές σε αγκύλες και θα τις αντικαταστήσει με '!'.

Ελληνικά
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Χρησιμοποιούμε cookie για τη λειτουργία του ιστότοπου, την ανάλυση και την εξατομίκευση. Η επεξεργασία των δεδομένων γίνεται σύμφωνα με την Πολιτική Απορρήτου.
αποδοχή όλων ρύθμιση απόρριψη