CodeKitHub
Εργαλεία κειμένου

Δοκιμαστής Regex Online

Τελευταία ενημέρωση:

Ένας δοκιμαστής regex σας επιτρέπει να γράψετε μια κανονική έκφραση και να δείτε αν ταιριάζει σε πραγματικό κείμενο ακαριαία, με ομάδες καταγραφής και flags ορατά καθώς πληκτρολογείτε — αυτός τρέχει τη μηχανή JavaScript που περιγράφεται στον οδηγό Κανονικών Εκφράσεων του MDN, την ίδια σύνταξη που χρησιμοποιεί το Node.js και κάθε πρόγραμμα περιήγησης. Εξαιρετικό για δημιουργία και εντοπισμό σφαλμάτων σε μοτίβα πριν τα βάλετε στον κώδικα.

//

    Τι είναι αυτό το εργαλείο;

    Μια κανονική έκφραση (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).
    • Σαφή μηνύματα σφάλματος όταν το μοτίβο έχει συντακτικό λάθος.
    • Δωρεάν και ιδιωτικό — το μοτίβο και το κείμενο δεν φεύγουν ποτέ από το πρόγραμμα περιήγησής σας.

    Πώς χρησιμοποιείται

    1. Πληκτρολογήστε το μοτίβο σας ανάμεσα στους δύο χαρακτήρες / (δεν χρειάζεται να διαφύγετε (escape) εσείς τις πλάγιες γραμμές).
    2. Προσαρμόστε τα flags στο μικρό πλαίσιο μετά τη δεύτερη / — το προεπιλεγμένο g βρίσκει όλες τις αντιστοιχίες.
    3. Επικολλήστε το κείμενο δοκιμής σας από κάτω.
    4. Οι αντιστοιχίες επισημαίνονται ακαριαία· οι ομάδες καταγραφής παρατίθενται από κάτω.
    5. Αν το μοτίβο είναι μη έγκυρο, το μήνυμα σφάλματος εξηγεί τι πάει στραβά.

    Παράδειγμα

    Είσοδος

    Μοτίβο: (\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 — μορφοποιήστε τα εξαγόμενα δεδομένα για να ελέγξετε ότι αναλύθηκαν όπως περιμένατε.

    Σύγκριση Κειμένων · Μορφοποιητής 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 αντιστοιχιών για να παραμένει αποκρίσιμο.

    Σχετικά εργαλεία