Πώς λειτουργούν οι κανονικές εκφράσεις στο πρόγραμμα περιήγησής σας;
Κάθε περιβάλλον JavaScript διαθέτει μια εγγενή μηχανή κανονικών εκφράσεων — το new RegExp(pattern, flags) μεταγλωττίζει το μοτίβο σας, στη συνέχεια μέθοδοι όπως String.prototype.match, String.prototype.replace και RegExp.prototype.exec το τρέχουν έναντι οποιασδήποτε συμβολοσειράς εισόδου. Αυτός ο δοκιμαστής περιβάλλει αυτή τη μηχανή σε ένα UI ώστε να μπορείτε να επεξεργαστείτε, να τρέξετε και να επιθεωρήσετε μοτίβα χωρίς να φύγετε από το πρόγραμμα περιήγησής σας. Τίποτα από όσα πληκτρολογείτε — μοτίβο, σημαίες, δοκιμαστική συμβολοσειρά ή αντικατάσταση — δεν αποστέλλεται μέσω δικτύου.
Πώς λειτουργεί ο δοκιμαστής regex;
Ο αγωγός είναι μερικά σύντομα βήματα, όλα από την πλευρά του πελάτη σε κάθε πληκτρολόγηση (με αποκλιμάκωση στα 150 ms για να παραμένει η πληκτρολόγηση ρευστή):
- Το σώμα του μοτίβου σας διαβάζεται από την είσοδο παραπάνω (χωρίς μπροστινούς ή πίσω οριοθέτες
/— είναι διακοσμητικοί). Οι επιλεγμένες σημαίες συνενώνονται σε μια συμβολοσειρά σημαιών όπωςgiήgimsuy. - Το
new RegExp(patternBody, flags)μεταγλωττίζει το μοτίβο. Αν η μηχανή πετάξειSyntaxError(π.χ. αταίριαστη παρένθεση ή μη έγκυρη διαφυγή), το μήνυμα εμφανίζεται πάνω από τη δοκιμαστική συμβολοσειρά και η λίστα αντιστοιχιών εκκαθαρίζεται. Το σφάλμα μεταγλώττισης είναι το πραγματικόerr.messageαπό τη V8 / SpiderMonkey / JavaScriptCore ώστε να ταιριάζει με ό,τι θα βλέπατε στα DevTools. - Για τη λίστα αντιστοιχιών, ο δοκιμαστής απαριθμεί πάντα με μια συνθετική συνολική σημαία — ακόμα κι αν απενεργοποιήσετε το
g, η λίστα εξακολουθεί να εμφανίζει κάθε αντιστοιχία. Η τυπική προστασία αντιστοιχίας μηδενικού πλάτους (if (m.index === rx.lastIndex) rx.lastIndex++) κρατά τον βρόχο από το να περιστρέφεται σε μοτίβα που αντιστοιχούν σε κενή συμβολοσειρά. Η λειτουργία Αντικατάστασης σέβεται το πραγματικό σύνολο σημαιών σας, ώστε το$&να συμπεριφέρεται όπωςString.prototype.replace. - Μεταξύ κάθε επανάληψης, ο δοκιμαστής ελέγχει
performance.now() - startκαι διακόπτει μόλις περάσουν 50 ms. Αυτό προστατεύει από καταστροφικό backtracking σε εισόδους όπως(a+)+$μιας μεγάλης ακολουθίαςa— η καρτέλα διαφορετικά θα κρεμούσε. Η προστασία είναι best-effort: ένα παθολογικό μοτίβο μπορεί ακόμα να καταναλώσει χρόνο μέσα σε μία κλήσηexec. Αν συμβεί αυτό, ανανεώστε την καρτέλα και ξαναγράψτε το μοτίβο με έναν μη-greedy ποσοδείκτη ή με μια ατομικού-στυλ κτητική μορφή (π.χ.[^x]*x). - Η δοκιμαστική συμβολοσειρά χωρίζεται σε τμήματα σε κάθε εύρος αντιστοιχίας και τα αντιστοιχισμένα τμήματα τυλίγονται σε στοιχεία
<mark class="rx-match rx-cap-N">, όπουNεναλλάσσεται σε έξι χρώματα παλέτας ώστε οι γειτονικές αντιστοιχίες να είναι εύκολο να διακριθούν με μια ματιά. Οι αριθμημένες ομάδες κάθε αντιστοιχίας (m[1],m[2], …) και οι ονομασμένες ομάδες (m.groups) αποδίδονται ως επισημασμένες γραμμές παρακάτω· αν έχει οριστεί η σημαίαd, εμφανίζονται και τα ανά-ομάδα ευρετήρια[start, end].
Γιατί να χρησιμοποιήσετε αυτό τον δοκιμαστή regex;
- Ιδιωτικότητα: κάθε μοτίβο, δοκιμαστική συμβολοσειρά και αντικατάσταση τρέχει στο πρόγραμμα περιήγησής σας χρησιμοποιώντας την ενσωματωμένη μηχανή JavaScript RegExp. Τίποτα δεν φεύγει από την καρτέλα — σημαντικό όταν η είσοδος είναι ένα αρχείο καταγραφής πελάτη, ένα μοτίβο διαρρευσάντων διαπιστευτηρίων ή οτιδήποτε άλλο δεν θα επικολλούσατε σε μια hosted SaaS regex παιδική χαρά.
- Ειλικρινής γεύση: ο δοκιμαστής εκθέτει την ακριβή μηχανή regex που τρέχουν τα Node.js, Chrome, Safari, Firefox και κάθε επικυρωτής φόρμας που βασίζεται σε πρόγραμμα περιήγησης. Δεν υπάρχει επίπεδο μετάφρασης Perl-flavor για να κρύψει λεπτές διαφορές — ό,τι λειτουργεί εδώ λειτουργεί και στον κώδικά σας.
- Εντοπισμός σφαλμάτων ομάδων σύλληψης και ονομασμένων ομάδων: κάθε αριθμημένη ομάδα (
$1,$2, …) και ονομασμένη ομάδα ($<year>) εμφανίζεται ανά αντιστοιχία ώστε να μπορείτε να χτίσετε έναν αναλυτή και να διαβάσετε τις θέσεις πίσω χωρίς να μαντεύετε. Η λειτουργία Αντικατάστασης σας επιτρέπει να αναμειγνύετε ελεύθερα τις ομάδες — το$2-$1ανταλλάσσει τις δύο πρώτες θέσεις, το$<name>ρίχνει μια ονομασμένη θέση και το$&αντηχεί ολόκληρη την αντιστοιχία. - Προστασία από καταστροφικό backtracking: ένα όριο 50 ms στην απαρίθμηση διακόπτει παθολογικά μοτίβα όπως
(a+)+$πριν παγώσουν την καρτέλα. Βλέπετε ένα επεξηγηματικό σφάλμα αντί για ένα κρεμασμένο πρόγραμμα περιήγησης και η σελίδα ανακτάται αμέσως.
Ποιες είναι οι συνήθεις εφαρμογές ενός δοκιμαστή regex;
Οι κανονικές εκφράσεις εμφανίζονται στην ανάπτυξη ιστού, την ασφάλεια και την εργασία με δεδομένα — αυτός ο δοκιμαστής στοχεύει τις πιο συνηθισμένες περιπτώσεις χρήσης:
- Επικύρωση φόρμας: δημιουργήστε ένα μοτίβο email, τηλεφώνου ή ταχυδρομικού κώδικα, επικολλήστε δείγματα εισόδων στη δοκιμαστική συμβολοσειρά και επιβεβαιώστε ότι κάθε θετική περίπτωση αντιστοιχεί και κάθε αρνητική δεν αντιστοιχεί πριν στείλετε το μοτίβο σε κώδικα παραγωγής.
- Απόξεση αρχείων καταγραφής: επικολλήστε ένα κομμάτι εξόδου NGINX, εφαρμογής ή ελέγχου, γράψτε ένα μοτίβο με ονομασμένες ομάδες για τα μέρη που σας ενδιαφέρουν (
(?<ip>…) (?<path>…)) και διαβάστε τις συλληφθείσες θέσεις ανά αντιστοιχία για να επιβεβαιώσετε ότι ο αναλυτής σας είναι σωστός. - Ανακατασκευή αναζήτησης-και-αντικατάστασης: χρησιμοποιήστε τη λειτουργία Αντικατάστασης για να ξαναγράψετε αναγνωριστικά σε ένα απόσπασμα —
(\w+)\.set(\w+)\(→$1.$2 =μετατρέπει κλήσεις getter σε αναθέσεις ιδιοτήτων και η ζωντανή προεπισκόπηση δείχνει το αποτέλεσμα πριν το δεσμευτείτε σε ένα codemod.
Πώς μοιάζει ένα παράδειγμα regex;
Πάρτε το μοτίβο (\d{4})-(\d{2})-(\d{2}) με τη σημαία g, τρέξτε το έναντι της δοκιμαστικής συμβολοσειράς release 2025-11-15, prerelease 2026-05-25. Η μηχανή βρίσκει δύο αντιστοιχίες. Η πρώτη αντιστοιχία είναι 2025-11-15 με ομάδα 1 = 2025, ομάδα 2 = 11, ομάδα 3 = 15. Η δεύτερη αντιστοιχία είναι 2026-05-25 με την ίδια δομή ομάδων. Στη λειτουργία Αντικατάστασης, το πρότυπο αντικατάστασης $3/$2/$1 ξαναγράφει και τις δύο ημερομηνίες σε 15/11/2025 και 25/05/2026 — μια μετατροπή ISO-σε-DMY ενός μοτίβου που μπορείτε να επαληθεύσετε οπτικά πριν συνδέσετε το μοτίβο σε ένα σενάριο.
Χρησιμοποιήστε αυτό τον δοκιμαστή ως τη γρήγορη διαδρομή για οποιαδήποτε εργασία regex — δημιουργία, εντοπισμός σφαλμάτων ή επαναγραφή μοτίβων. Όλα τρέχουν τοπικά· τίποτα δεν καταγράφεται· η μηχανή regex είναι ό,τι αποστέλλει το πρόγραμμα περιήγησής σας, οπότε η συμπεριφορά ταιριάζει με αυτό που θα δει ο κώδικας παραγωγής κατά την εκτέλεση.