Τι είναι αυτό το εργαλείο;
Μια κανονική έκφραση (regex) είναι μια συνοπτική γλώσσα μοτίβων για εύρεση, επικύρωση και εξαγωγή κειμένου: ένα μοτίβο email μπορεί να επικυρώσει είσοδο φόρμας, το \d{4}-\d{2}-\d{2} βρίσκει ημερομηνίες, και οι ομάδες καταγραφής εξάγουν τα κομμάτια που χρειάζεστε. Σχεδόν κάθε γλώσσα προγραμματισμού και επεξεργαστής υποστηρίζει regex.
Αυτός ο δοκιμαστής χρησιμοποιεί τη μηχανή regex της JavaScript — την ίδια που τρέχει στο Node.js και σε κάθε πρόγραμμα περιήγησης — οπότε τα μοτίβα που φτιάχνετε εδώ συμπεριφέρονται πανομοιότυπα στον κώδικα JavaScript/TypeScript σας. Τα περισσότερα μοτίβα λειτουργούν επίσης αναλλοίωτα σε Python, Java και Go.
Γιατί να το χρησιμοποιήσετε;
- Ζωντανή ανάδραση: οι αντιστοιχίες επισημαίνονται με κίτρινο καθώς πληκτρολογείτε το μοτίβο.
- Ομάδες καταγραφής εμφανίζονται ανά αντιστοιχία — δείτε ακριβώς τι θα περιέχουν τα $1 και $2.
- Πλήρης υποστήριξη flags: g (όλες οι αντιστοιχίες), i (αγνόηση πεζών/κεφαλαίων), m (πολλαπλές γραμμές), s (η τελεία ταιριάζει με νέα γραμμή), u (unicode).
- Σαφή μηνύματα σφάλματος όταν το μοτίβο έχει συντακτικό λάθος.
- Δωρεάν και ιδιωτικό — το μοτίβο και το κείμενο δεν φεύγουν ποτέ από το πρόγραμμα περιήγησής σας.
Πώς χρησιμοποιείται
- Πληκτρολογήστε το μοτίβο σας ανάμεσα στους δύο χαρακτήρες / (δεν χρειάζεται να διαφύγετε (escape) εσείς τις πλάγιες γραμμές).
- Προσαρμόστε τα flags στο μικρό πλαίσιο μετά τη δεύτερη / — το προεπιλεγμένο g βρίσκει όλες τις αντιστοιχίες.
- Επικολλήστε το κείμενο δοκιμής σας από κάτω.
- Οι αντιστοιχίες επισημαίνονται ακαριαία· οι ομάδες καταγραφής παρατίθενται από κάτω.
- Αν το μοτίβο είναι μη έγκυρο, το μήνυμα σφάλματος εξηγεί τι πάει στραβά.
Παράδειγμα
Είσοδος
Μοτίβο: (\w+)@(\w+)\.com
Κείμενο δοκιμής: Contact alice@example.com or bob@test.comΈξοδος
✓ 2 αντιστοιχίες
#1 ομάδες: $1=alice $2=example
#2 ομάδες: $1=bob $2=testΟι παρενθέσεις δημιουργούν ομάδες καταγραφής στις οποίες μπορείτε να αναφερθείτε ως $1 και $2 σε αντικαταστάσεις.
Πρακτικές συμβουλές
- Επικυρώνετε είσοδο email; Το ^[^\s@]+@[^\s@]+\.[^\s@]+$ είναι ένα ανεκτικό μοτίβο που πιάνει προφανή τυπογραφικά λάθη χωρίς να απορρίπτει έγκυρες αλλά ασυνήθιστες διευθύνσεις — πλήρης συμμόρφωση με το RFC 5322 χρειάζεται βιβλιοθήκη, όχι μία γραμμή.
- Εξάγετε παραμέτρους query από ένα URL: [?&]([^=]+)=([^&]*) με το flag g, μετά διαβάστε $1/$2 ανά αντιστοιχία αντί να χωρίζετε χειροκίνητα σε & και =.
- Πρόκειται να χρησιμοποιήσετε ένα μοτίβο σε .replace(); Δοκιμάστε το πρώτα εδώ — ό,τι επισημαίνεται είναι ακριβώς ό,τι θα αγγίξει το .replace(), ομάδες καταγραφής συμπεριλαμβανομένων.
- Αναλύετε πολυγραμμικά logs (αντιστοίχιση χρονοσφραγίδας στην αρχή κάθε γραμμής); Προσθέστε το flag m ώστε τα ^ και $ να αγκυρώνουν ανά γραμμή αντί για ολόκληρο το string.
- Αντιγράψατε ένα μοτίβο από Python ή PHP και δεν ταιριάζει εδώ; Ελέγξτε για ομάδες (?P<name>...) — η JavaScript χρησιμοποιεί (?<name>...), χωρίς P — ή "κτητικούς" ποσοδείκτες (++, *+), που δεν υπάρχουν στο regex της JavaScript.
Ένας δοκιμαστής regex JavaScript, όχι γενικός
Αυτό το εργαλείο τρέχει την ενσωματωμένη μηχανή RegExp της JavaScript — ακριβώς το ίδιο μονοπάτι κώδικα πίσω από τα str.match(pattern) ή pattern.test(str) σε κονσόλα προγράμματος περιήγησης ή Node.js. Αυτό διαφέρει από τη δοκιμή έναντι PCRE (αυτό που χρησιμοποιεί η PHP, και το προεπιλεγμένο σε πολλούς "γενικούς" δοκιμαστές regex) ή του module re της Python: η JavaScript δεν έχει κτητικούς ποσοδείκτες ή ατομικές ομάδες, και οι ονομασμένες ομάδες καταγραφής χρησιμοποιούν (?<name>...) αντί για (?P<name>...) της PCRE/Python.
Αν πρόκειται να χρησιμοποιήσετε ένα μοτίβο μέσα σε JS ή TypeScript — επικύρωση φόρμας, αντιστοίχιση διαδρομής, ανάλυση logs — η δοκιμή εδώ σημαίνει μηδενική αναντιστοιχία "γεύσης": ό,τι επισημαίνεται σε αυτή τη σελίδα είναι ακριβώς ό,τι ταιριάζει το new RegExp(pattern, flags) κατά την εκτέλεση.
Πού ταιριάζει αυτό σε πραγματικές ροές εργασίας
Μια δοκιμή regex σπάνια στέκεται μόνη της. Η συνήθης ακολουθία: επιβεβαιώστε το μοτίβο εδώ, τρέξτε το πραγματικό .replace() στον κώδικά σας, μετά συγκρίνετε το κείμενο πριν/μετά για να βεβαιωθείτε ότι η αντικατάσταση έκανε ό,τι περιμένατε και τίποτα άλλο.
Η εξαγωγή δομημένων δεδομένων με ομάδες καταγραφής συχνά τροφοδοτεί απευθείας JSON — μορφοποιήστε τα εξαγόμενα δεδομένα για να ελέγξετε ότι αναλύθηκαν όπως περιμένατε.
Συχνές ερωτήσεις
Ποια "γεύση" regex χρησιμοποιεί αυτός ο δοκιμαστής;
JavaScript (ECMAScript), τη μηχανή σε κάθε πρόγραμμα περιήγησης και το Node.js. Η βασική σύνταξη είναι φορητή, αλλά κάποια χαρακτηριστικά διαφέρουν μεταξύ γλωσσών — π.χ. η υποστήριξη lookbehind και η σύνταξη ονομασμένων ομάδων διαφέρουν σε Python και Java.
Γιατί το μοτίβο μου βρίσκει μόνο την πρώτη αντιστοιχία;
Λείπει το flag g (global). Χωρίς το g, ένα regex σταματά μετά την πρώτη αντιστοιχία. Αυτό το εργαλείο έχει προεπιλογή το g — ελέγξτε μήπως το αφαιρέσατε.
Γιατί η τελεία . δεν ταιριάζει με τις αλλαγές γραμμής μου;
Εξ ορισμού η . ταιριάζει με οποιονδήποτε χαρακτήρα εκτός από νέες γραμμές. Προσθέστε το flag s (dotall) για να κάνει η . να ταιριάζει και με νέες γραμμές, ή χρησιμοποιήστε [\s\S] ως φορητή εναλλακτική.
Τι σημαίνουν τα αποτελέσματα ομάδων καταγραφής;
Κάθε ζεύγος παρενθέσεων στο μοτίβο σας καταγράφει το κείμενο που ταίριαξε. Το $1 είναι η πρώτη ομάδα, το $2 η δεύτερη, κ.ο.κ. — αυτά είναι στα οποία αναφέρεστε σε λειτουργίες αντικατάστασης και εξαγωγής κώδικα.
Γιατί το regex μου είναι αργό ή "παγώνει";
Πιθανότατα καταστροφικό backtracking, που προκαλείται από ένθετους ποσοδείκτες όπως (a+)+ σε κείμενο που δεν ταιριάζει. Ξαναγράψτε το μοτίβο για να αποφύγετε ασαφή επανάληψη. Αυτό το εργαλείο έχει όριο 1000 αντιστοιχιών για να παραμένει αποκρίσιμο.