39. Κανονικές εκφράσεις (regular expressions) JavaScript

JS RegExp


Μια κανονική έκφραση είναι μια ακολουθία χαρακτήρων που σχηματίζει ένα πρότυπο αναζήτησης.

Το πρότυπο αναζήτησης μπορεί να χρησιμοποιηθεί για αναζητήσεις και αντικαταστάσεις κειμένου.


Τι είναι μια κανονική έκφραση;

Μια κανονική έκφραση είναι μια ακολουθία χαρακτήρων που σχηματίζει ένα πρότυπο αναζήτησης .

Όταν αναζητάτε δεδομένα σε ένα κείμενο, μπορείτε να χρησιμοποιήσετε αυτό το πρότυπο αναζήτησης για να περιγράψετε αυτό που αναζητάτε.

Μια κανονική έκφραση μπορεί να είναι ένας μόνο χαρακτήρας ή ένα πιο πολύπλοκο μοτίβο.

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

Σύνταξη

/pattern/modifiers;

Παράδειγμα

var patt = /w3schools/i;

Εξήγηση παραδείγματος:

/ w3schools / i   είναι μια κανονική έκφραση.

w3schools   είναι ένα μοτίβο (για να χρησιμοποιηθεί σε μια αναζήτηση).

Το i   είναι ένας τροποποιητής (τροποποιεί την αναζήτηση ώστε να μην κάνει διάκριση πεζών-κεφαλαίων).


Χρησιμοποιώντας μεθόδους συμβολοσειρών

Στη JavaScript, οι κανονικές εκφράσεις χρησιμοποιούνται συχνά με δύο μεθόδους συμβολοσειράς : search() και replace().

Η μέθοδος search() χρησιμοποιεί μια έκφραση για αναζήτηση μιας αντιστοίχισης και επιστρέφει τη θέση που ταιριάζει.

Η μέθοδος replace() επιστρέφει μια τροποποιημένη συμβολοσειρά όπου έχει αντικατασταθεί το pattern.


Χρήση String search() με ένα String

Η μέθοδος search() αναζητά μια συμβολοσειρά για μια καθορισμένη τιμή και επιστρέφει τη θέση που ταιριάζει:

Παράδειγμα

Χρησιμοποιήστε ένα string για να κάνετε αναζήτηση για το “W3schools” σε μια συμβολοσειρά:

var str = "Visit W3Schools!";
var n = str.search("W3Schools");

Δοκιμάστε τον εαυτό σας »


Χρήση String search() με μία κανονική έκφραση

Παράδειγμα

Χρησιμοποιήστε μια κανονική έκφραση για να κάνετε μια αναζήτηση χωρίς διάκριση σε πεζά-κεφαλαία για το “w3schools” σε μια συμβολοσειρά:

var str = "Visit W3Schools";
var n = str.search(/w3schools/i);

Το αποτέλεσμα στο n θα είναι:6

Δοκιμάστε τον εαυτό σας »


Χρήση του String replace() με ένα String

Η replace() μέθοδος αντικαθιστά μια καθορισμένη τιμή με μια άλλη τιμή σε μια συμβολοσειρά:

var str = "Visit Microsoft!";
var res = str.replace("Microsoft", "W3Schools");

Δοκιμάστε τον εαυτό σας »


Χρήση String replace() με Regular Expression

Παράδειγμα

Χρησιμοποιήστε μια κανονική έκφραση μη ευαίσθητη σε πεζα-κεφαλαία που αντικαθιστά τη Microsoft με W3Schools σε μια συμβολοσειρά:

var str = "Visit Microsoft!";
var res = str.replace(/microsoft/i, "W3Schools");

Το αποτέλεσμα του res θα είναι:Visit W3Schools!

Δοκιμάστε τον εαυτό σας »


Παρατηρήσατε;

Τα ορίσματα κανονικής έκφρασης (αντί για τα ορίσματα συμβολοσειράς) μπορούν να χρησιμοποιηθούν στις παραπάνω μεθόδους.
Οι κανονικές εκφράσεις μπορούν να κάνουν την αναζήτησή σας πολύ ισχυρότερη (για παράδειγμα, case insensitive ).


Τροποποιητές (modifiers) κανονικών εκφράσεων

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

ΤροποποιητήςΠεριγραφήΔοκιμάστε το
iΕκτέλεση αντιστοίχισης χωρίς διάκριση πεζών κεφαλαίωνTry it »
gΕκτέλεση καθολικής αντιστοίχισης (εύρεση όλων των αντιστοιχίσεων μετά το πρώτο ταίριασμα)Try it »
mΕκτέλεση αντιστοίχισης πολλών γραμμώνTry it »

Πρότυπα κανονικών εκφράσεων

Οι αγκύλες χρησιμοποιούνται για την εύρεση μιας σειράς χαρακτήρων:

ExpressionDescriptionTry it
[abc]Find any of the characters between the bracketsTry it »
[0-9]Find any of the digits between the bracketsTry it »
(x|y)Find any of the alternatives separated with |Try it »

Οι metacharacters  είναι χαρακτήρες με ιδιαίτερο νόημα:

MetacharacterDescriptionTry it
\dΒρίσκει ένα δεκαδικόTry it »
\sΒρίσκει έναν κενό διάστημαTry it »
\bΒρίσκει μια αντιστοίχιση στην αρχή μιας λέξης όπως εδώ: \bWORD, ή στο τέλος μιας λέξης όπως εδώ: WORD\bTry it »
Try it »
\uxxxxΒρίσκει τον Unicode χαρακτήρα που καθορίζεται από τον δεκαεξαδικό αριθμό xxxxTry it »

Οι Quantifiers ορίζουν τις ποσότητες:

QuantifierDescriptionTry it
n+Ταιριάζει κάθε συμβολοσειρά που περιέχει τουλάχιστον ένα nTry it »
n*Ταιριάζει κάθε συμβολοσειρά που περιέχει μηδέν ή περισσότερες εμφανίσεις του nTry it »
n?Ταιριάζει κάθε συμβολοσειρά η οποία περιέχει μηδέν ή μία εμφάνιση του nTry it »

Χρήση του αντικειμένου RegExp

Στη JavaScript, το αντικείμενο RegExp είναι αντικείμενο κανονικής έκφρασης με προκαθορισμένες ιδιότητες και μεθόδους.


Χρήση της test()

Η μέθοδος test() είναι μια μέθοδος έκφρασης RegExp.

Αναζητά μια συμβολοσειρά για ένα μοτίβο και επιστρέφει αληθές ή ψευδές, ανάλογα με το αποτέλεσμα.

Το ακόλουθο παράδειγμα αναζητά μια συμβολοσειρά για τον χαρακτήρα “e”:

Παράδειγμα

var patt = /e/;
patt.test("The best things in life are free!");

Δεδομένου ότι υπάρχει “e” στη συμβολοσειρά, η έξοδος του παραπάνω κώδικα θα είναι:

true

Δοκιμάστε τον εαυτό σας »


Δεν χρειάζεται να βάζετε πρώτα την κανονική έκφραση σε μια μεταβλητή. Οι δύο παραπάνω γραμμές μπορούν να μειωθούν σε μία:

 /e/.test("The best things in life are free!"); 

Χρηση της exec()

Η μέθοδος exec() είναι μια μέθοδος έκφρασης RegExp.

Αναζητά μια συμβολοσειρά για ένα συγκεκριμένο μοτίβο και επιστρέφει το κείμενο που βρέθηκε ως αντικείμενο.

Αν δεν βρεθεί καμία αντιστοίχιση, επιστρέφει ένα άδειο (null) αντικείμενο.

Το ακόλουθο παράδειγμα αναζητά σε μια συμβολοσειρά τον χαρακτήρα “e”:

Παράδειγμα 1

/e/.exec("The best things in life are free!");

Δοκιμάστε τον εαυτό σας »


Πλήρης τεκμηρίωση RegExp

Για πλήρη τεκμηρίωση, μεταβείτε στην  Complete JavaScript RegExp Reference.

Η τεκμηρίωση περιέχει περιγραφές και παραδείγματα όλων των ιδιοτήτων και μεθόδων των RegExp.


39. Κανονικές εκφράσεις (regular expressions) JavaScript

Κοινοποίηση

Share on facebook
Share on twitter

Ακολουθήστε μας

This website uses cookies to ensure you get the best experience on our website. By continuing to use this website, you agree to their use. To find out more, see here: Privacy Policy
Αρέσει σε %d bloggers: