Δοκιμαστής Κανονικών Εκφράσεων
Εισαγάγετε ένα μοτίβο και κείμενο δοκιμής — οι αντιστοιχίσεις επισημαίνονται ζωντανά. Το μοτίβο και οι σημαίες συγχρονίζονται με το URL για διαμοιρασμό· το κείμενο δοκιμής σας ποτέ.
Αποτέλεσμα με επισήμανση
Αντιστοιχίσεις (0)
Δοκιμάστε κανονικές εκφράσεις JavaScript σε πραγματικό κείμενο
Αυτό το εργαλείο δημιουργεί ένα εγγενές RegExp από το
μοτίβο και τις σημαίες σας, μετά το τρέχει στο κείμενο δοκιμής
σας ακριβώς όπως θα το έτρεχε ο δικός σας κώδικας JavaScript — με matchAll() όταν η global σημαία είναι ενεργή, ή ένα
μοναδικό exec() όταν είναι ανενεργή. Κάθε
αντιστοίχιση επισημαίνεται στη θέση της, και κάθε μία απαριθμείται
παρακάτω με τον δείκτη της στη συμβολοσειρά και το κείμενο που
συνέλαβε κάθε ομάδα σε παρένθεση. Σημειώστε ότι η αντιστοίχιση
βασίζεται στη σύνταξη regex της JavaScript — δείτε το FAQ για το
τι σημαίνει αυτό αν δουλεύετε και με άλλες γλώσσες.
Παράδειγμα
Μοτίβο: (\w+)@(\w+)\.com, σημαίες gu, έναντι "Επικοινωνήστε στο maria@example.com ή στο gianni@test.com για βοήθεια."
-
Αντιστοίχιση 1 στον δείκτη 18:
maria@example.com— Ομάδα 1:maria· Ομάδα 2:example -
Αντιστοίχιση 2 στον δείκτη 42:
gianni@test.com— Ομάδα 1:gianni· Ομάδα 2:test
Δύο αντιστοιχίσεις, επειδή η global σημαία είναι ενεργή — χωρίς αυτήν, το εργαλείο θα σταματούσε μόλις έβρισκε το πρώτο «maria@example.com».
Συχνές ερωτήσεις
Γιατί το `.` δεν ταιριάζει με αλλαγή γραμμής στο κείμενο δοκιμής μου;
Από προεπιλογή, το . της JavaScript ταιριάζει με οποιονδήποτε χαρακτήρα εκτός από τερματιστές γραμμής. Αν το κείμενο δοκιμής σας εκτείνεται σε πολλές γραμμές και χρειάζεστε το . να ταιριάζει και σε αυτές, ενεργοποιήστε τη σημαία s (dotAll) — με αυτήν ενεργή, το . ταιριάζει και με αλλαγές γραμμής. Χωρίς αυτήν, ένα μοτίβο όπως a.b θα ταιριάξει με «axb» αλλά όχι με «a\nb»· με τη σημαία s, ταιριάζουν και τα δύο.
Τι κάνει κάθε σημαία;
Η g (global) βρίσκει όλες τις αντιστοιχίσεις αντί να σταματήσει στην πρώτη. Η i (ignoreCase) κάνει την αντιστοίχιση ανεξάρτητη πεζών/κεφαλαίων. Η m (multiline) κάνει τα ^ και $ να ταιριάζουν με την αρχή/τέλος κάθε γραμμής, όχι μόνο ολόκληρης της συμβολοσειράς. Η s (dotAll) κάνει το . να ταιριάζει και με αλλαγές γραμμής. Η u (unicode) αντιμετωπίζει το μοτίβο ως ακολουθία σημείων κώδικα Unicode, κάτι που διορθώνει την αντιστοίχιση για χαρακτήρες εκτός του Βασικού Πολυγλωσσικού Πεδίου (πολλά emoji) και ενεργοποιεί escape ιδιοτήτων Unicode όπως το \p{L}.
Είναι αυτή συγκεκριμένα η σύνταξη regex της JavaScript;
Ναι. Αυτό το εργαλείο δημιουργεί ένα εγγενές RegExp της JavaScript, οπότε ακολουθεί ακριβώς τους κανόνες regex της JS — που δεν είναι καθολικοί. Άλλα εργαλεία και γλώσσες χρησιμοποιούν διαφορετικές διαλέκτους: το PCRE (χρησιμοποιείται από την PHP, και υπερσύνολο στο οποίο βασίζονται πολλά εργαλεία) υποστηρίζει σύνταξη που η JS δεν έχει (όπως atomic groups και possessive quantifiers), και αντίστροφα η JS έχει δυνατότητες που λείπουν από παλαιότερες εκδόσεις του PCRE. Αν γράφετε μοτίβο για grep, την re της Python ή ένα εργαλείο βασισμένο σε PCRE, δοκιμάστε το και εκεί — μην υποθέτετε ότι μια αντιστοίχιση εδώ εγγυάται αντιστοίχιση αλλού.
Πώς λειτουργούν οι ομάδες σύλληψης (capture groups);
Οι παρενθέσεις σε ένα μοτίβο δημιουργούν μια ομάδα σύλληψης — το κείμενο που ταίριαξε αυτή η ομάδα εξάγεται ξεχωριστά από τη συνολική αντιστοίχιση. Για παράδειγμα, το (\w+)@(\w+)\.com έναντι του «maria@example.com» ταιριάζει με ολόκληρη τη συμβολοσειρά ως ομάδα 0 (η πλήρης αντιστοίχιση), με την ομάδα 1 να συλλαμβάνει «maria» και την ομάδα 2 «example». Αυτό το εργαλείο απαριθμεί το κείμενο κάθε ομάδας κάτω από κάθε αντιστοίχιση.