Μετάβαση στο περιεχόμενο

Δωρεάν Online Regex Tester & Επικυρωτής - Δοκιμή Προτύπων Άμεσα

Δοκιμάστε και επικυρώστε κανονικές εκφράσεις online με επισήμανση σε πραγματικό χρόνο. Δωρεάν εργαλείο ελέγχου προτύπων regex με επικύρωση σύνταξης, αποτελέσματα αντιστοίχισης και λειτουργία αποθήκευσης. Δοκιμάστε regex τώρα!

Δοκιμαστής Προτύπου Regex

Αποτελέσματα Αντιστοίχισης

Εισαγάγετε ένα πρότυπο και κείμενο δοκιμής για να δείτε τα αποτελέσματα

Αποθήκευση Προτύπου

Αποθηκευμένα Πρότυπα

Δεν υπάρχουν αποθηκευμένα πρότυπα ακόμα

Οδηγός Συμβόλων Regex

.Ταιριάζει οποιονδήποτε χαρακτήρα εκτός από νέα γραμμή
\dΤαιριάζει οποιοδήποτε ψηφίο (0-9)
\DΤαιριάζει οποιοδήποτε μη-ψηφίο
\wΤαιριάζει οποιονδήποτε χαρακτήρα λέξης (a-z, A-Z, 0-9, _)
\WΤαιριάζει οποιονδήποτε μη-χαρακτήρα λέξης
\sΤαιριάζει οποιονδήποτε χαρακτήρα κενού
\SΤαιριάζει οποιονδήποτε μη-χαρακτήρα κενού
^Ταιριάζει την αρχή της γραμμής
$Ταιριάζει το τέλος της γραμμής
*Ταιριάζει 0 ή περισσότερες φορές τον προηγούμενο χαρακτήρα
+Ταιριάζει 1 ή περισσότερες φορές τον προηγούμενο χαρακτήρα
?Ταιριάζει 0 ή 1 φορά τον προηγούμενο χαρακτήρα
{n}Ταιριάζει ακριβώς n φορές τον προηγούμενο χαρακτήρα
{n,}Ταιριάζει τουλάχιστον n φορές τον προηγούμενο χαρακτήρα
{n,m}Ταιριάζει μεταξύ n και m φορών τον προηγούμενο χαρακτήρα
[abc]Ταιριάζει οποιονδήποτε από τους χαρακτήρες στις αγκύλες
[^abc]Ταιριάζει οποιονδήποτε χαρακτήρα που δεν είναι στις αγκύλες
(abc)Ομαδοποιεί πολλαπλά σύμβολα και καταγράφει την αντιστοίχιση
a|bΤαιριάζει είτε το a είτε το b
\bΤαιριάζει τη θέση ορίου λέξης
Υπολογιστής φόρτωσης...
📚

Τεκμηρίωση

Τι είναι ένα εργαλείο ελέγχου regex

Ένας ελεγκτής regex είναι ένα εργαλείο που ελέγχει μια κανονική έκφραση σε ένα τμήμα κειμένου και εμφανίζει τι ταιριάζει. Η κανονική έκφραση, ή regex, είναι μια σύντομη ακολουθία χαρακτήρων που περιγράφει ένα μοτίβο σε κείμενο, όπως «τρία διαδοχικά ψηφία» ή «οποιαδήποτε λέξη που αρχίζει με κεφαλαίο γράμμα». Αυτός ο επικυρωτής regex επιτρέπει στον χρήστη να πληκτρολογήσει ένα μοτίβο και κείμενο δοκιμής και να δει αμέσως τα ταιριάσματα επισημασμένα, χωρίς να γράψει κώδικα.

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

Πώς να δοκιμάσετε μια κανονική έκφραση online

  1. Πληκτρολογήστε ένα μοτίβο. Εισαγάγετε το regex στο πεδίο μοτίβου. Το εργαλείο ελέγχει τη σύνταξη καθώς πληκτρολογεί ο χρήστης και εμφανίζει μήνυμα σφάλματος αν το μοτίβο δεν είναι έγκυρο, για παράδειγμα αν έχει μείνει ανοιχτή μια αγκύλη ή παρένθεση.
  2. Επιλέξτε σημαίες. Οι σημαίες αλλάζουν τον τρόπο εφαρμογής του μοτίβου (βλ. παρακάτω).
  3. Εισαγάγετε κείμενο δοκιμής. Πληκτρολογήστε ή επικολλήστε το κείμενο προς αναζήτηση στο πλαίσιο κειμένου δοκιμής.
  4. Διαβάστε τα αποτελέσματα. Τα ταιριάσματα επισημαίνονται στο κείμενο και το εργαλείο αναφέρει πόσα ταιριάσματα βρήκε. Αν υπάρχει κείμενο δοκιμής, αναφέρει επίσης αν το μοτίβο ταιριάζει σε ολόκληρο το κείμενο από την αρχή έως το τέλος ή μόνο σε τμήμα του.
  5. Αποθηκεύστε ένα μοτίβο. Ένα μοτίβο μπορεί να αποθηκευτεί με μια σύντομη ετικέτα, ώστε να επαναχρησιμοποιηθεί αργότερα. Τα αποθηκευμένα μοτίβα διατηρούνται στο πρόγραμμα περιήγησης και όχι σε διακομιστή, επομένως εμφανίζονται μόνο στην ίδια συσκευή και στο ίδιο πρόγραμμα περιήγησης.
  6. Αντιγράψτε τα αποτελέσματα. Το κείμενο που ταιριάχτηκε ή το ίδιο το μοτίβο μπορεί να αντιγραφεί στο πρόχειρο με ένα κλικ.

Σημαίες regex

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

ΣημαίαΌνομαΕπίδραση
gΚαθολικήΕντοπίζει κάθε ταίριασμα στο κείμενο αντί να σταματά στο πρώτο.
iΧωρίς διάκριση πεζών-κεφαλαίωνΑγνοεί τις διαφορές μεταξύ κεφαλαίων και πεζών γραμμάτων.
mΠολλαπλών γραμμώνΚάνει τα ^ και $ να ταιριάζουν με την αρχή και το τέλος κάθε γραμμής, όχι μόνο με την αρχή και το τέλος ολόκληρου του κειμένου. Αλλάζει το σημείο όπου εντοπίζονται τα ταιριάσματα, όχι όμως τον έλεγχο ολόκληρου του κειμένου που περιγράφεται παρακάτω.
sΤελεία σε όλαΚάνει το . να ταιριάζει και με χαρακτήρες αλλαγής γραμμής.

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

Πώς το εργαλείο εντοπίζει τα ταιριάσματα

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

Για να ελέγξει αν ένα μοτίβο ταιριάζει σε ολόκληρο το κείμενο, το εργαλείο περικλείει το μοτίβο σε μια ομάδα χωρίς καταγραφή και το αγκυρώνει: ^(?:pattern)$. Η ομαδοποίηση έχει σημασία επειδή το | (εναλλαγή) έχει χαλαρότερη σύνδεση από τις άγκυρες. Χωρίς την ομάδα, ένα μοτίβο όπως το cat|dog, αγκυρωμένο ως ^cat|dog$, θα σήμαινε στην πραγματικότητα «αρχίζει με cat ή τελειώνει με dog», κάτι διαφορετικό από το «ολόκληρο το κείμενο είναι cat ή dog».

Ο έλεγχος αυτός αφαιρεί επίσης τη σημαία πολλαπλών γραμμών. Με ενεργοποιημένο το m, τα ^ και $ ταιριάζουν σε κάθε αλλαγή γραμμής, επομένως ο αγκυρωμένος έλεγχος θα απαντούσε «ταιριάζει κάποια γραμμή;» αντί για «ταιριάζει ολόκληρο το κείμενο;». Το εργαλείο αφαιρεί το m για αυτόν τον έλεγχο και διατηρεί τα i και s, επειδή αυτά τα δύο αλλάζουν το τι ταιριάζει το μοτίβο και όχι τη θέση των αγκυρών. Η απάντηση αφορά επομένως πάντα ολόκληρο το κείμενο, συμπεριλαμβανομένων των αλλαγών γραμμής.

Λυμένο παράδειγμα

Μοτίβο: \d+ (ένα ή περισσότερα ψηφία), σημαία: g, κείμενο δοκιμής: Room 12 has 5 chairs.

  • Βρέθηκαν ταιριάσματα: 12 και 5, επομένως ο αριθμός των ταιριασμάτων είναι 2.
  • Έλεγχος ολόκληρου κειμένου: το μοτίβο δεν ταιριάζει σε ολόκληρο το κείμενο, επειδή αυτό περιέχει επίσης γράμματα και κενά.

Αν το κείμενο δοκιμής αλλάξει σε 12345, το ίδιο μοτίβο ταιριάζει σε ολόκληρη τη συμβολοσειρά, επομένως ο έλεγχος ολόκληρου κειμένου αναφέρει true.

Αναφορά σύνταξης regex

Ταίριασμα χαρακτήρων

ΣύμβολοΣημασίαΠαράδειγμαΤαιριάσματα
.Οποιοσδήποτε χαρακτήρας εκτός από αλλαγή γραμμήςa.c"abc", "adc", "a1c"
\dΟποιοδήποτε ψηφίο, από 0 έως 9\d{3}"123", "456"
\DΟποιοσδήποτε χαρακτήρας που δεν είναι ψηφίο\D+"abc", "xyz"
\wΟποιοδήποτε γράμμα, ψηφίο ή κάτω παύλα\w+"abc123", "test_123"
\WΟποιοσδήποτε χαρακτήρας που δεν είναι γράμμα, ψηφίο ή κάτω παύλα\W+"!@#"
\sΟποιοσδήποτε χαρακτήρας κενού διαστήματοςa\sb"a b"
\SΟποιοσδήποτε χαρακτήρας που δεν είναι κενό διάστημα\S+"abc"

Άγκυρες θέσης

ΣύμβολοΣημασίαΠαράδειγμαΤαιριάσματα
^Αρχή γραμμής^abc"abc" στην αρχή μιας γραμμής
$Τέλος γραμμήςabc$"abc" στο τέλος μιας γραμμής
\bΌριο λέξης\bword\b"word" ως ολόκληρη λέξη

Ποσοδείκτες

ΣύμβολοΣημασίαΠαράδειγμαΤαιριάσματα
*Μηδέν ή περισσότερες εμφανίσεις του προηγούμενου στοιχείουa*b"b", "ab", "aab"
+Μία ή περισσότερες εμφανίσεις του προηγούμενου στοιχείουa+b"ab", "aab"
?Μηδέν ή μία εμφάνιση του προηγούμενου στοιχείουcolou?r"color", "colour"
{n}Ακριβώς n εμφανίσεις του προηγούμενου στοιχείουa{3}"aaa"
{n,}Τουλάχιστον n εμφανίσεις του προηγούμενου στοιχείουa{2,}"aa", "aaa"
{n,m}Από n έως m εμφανίσεις του προηγούμενου στοιχείουa{2,4}"aa", "aaa", "aaaa"

Σύνολα και ομάδες χαρακτήρων

ΣύμβολοΣημασίαΠαράδειγμαΤαιριάσματα
[abc]Οποιοσδήποτε ένας χαρακτήρας που παρατίθεται στις αγκύλες[aeiou]οποιοδήποτε μεμονωμένο φωνήεν
[^abc]Οποιοσδήποτε χαρακτήρας που δεν παρατίθεται στις αγκύλες[^aeiou]οποιοσδήποτε χαρακτήρας που δεν είναι φωνήεν
(abc)Ομαδοποιεί χαρακτήρες και καταγράφει το ταίριασμα(abc)+"abc", "abcabc"
`a\b`Ταιριάζει με το a ή το b`cat\

Αξίζει να γνωρίζετε δύο ακόμη δυνατότητες. Μια θετική προεπισκόπηση, γραμμένη ως a(?=b), ταιριάζει με το "a" μόνο όταν ακολουθείται από το "b", χωρίς να συμπεριλαμβάνει το "b" στο ταίριασμα. Μια θετική αναζήτηση προς τα πίσω, γραμμένη ως (?<=a)b, ταιριάζει με το "b" μόνο όταν έρχεται αμέσως μετά το "a".

Συνήθη παραδείγματα μοτίβων

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

Μόνο ψηφία: Το ^\d+$ ταιριάζει με μια συμβολοσειρά που αποτελείται αποκλειστικά από ψηφία, όπως το "48210", και απορρίπτει οτιδήποτε περιέχει γράμμα ή κενό.

Διεύθυνση email (βασικός έλεγχος): Το ^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$ ταιριάζει με διευθύνσεις της μορφής name@domain.tld, όπως "user@example.com". Είναι απλός έλεγχος και όχι η πλήρης μορφή email που ορίζεται από τα πρότυπα του Διαδικτύου, επομένως ορισμένες ασυνήθιστες αλλά έγκυρες διευθύνσεις θα αποτύχουν.

Αριθμός τηλεφώνου ΗΠΑ: Το ^\(?(\d{3})\)?[- ]?(\d{3})[- ]?(\d{4})$ ταιριάζει με μορφές όπως "(123) 456-7890", "123-456-7890" και "1234567890".

Ημερομηνία σε μορφή YYYY-MM-DD: Το ^\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])$ ελέγχει ότι ο μήνας βρίσκεται μεταξύ 01 και 12 και η ημέρα μεταξύ 01 και 31. Δεν ελέγχει αν η ημέρα είναι έγκυρη για τον συγκεκριμένο μήνα, επομένως αποδέχεται το "2024-02-30", παρότι ο Φεβρουάριος δεν έχει ποτέ 30 ημέρες.

Συχνές ερωτήσεις

Τι είναι μια κανονική έκφραση; Η κανονική έκφραση είναι μια ακολουθία χαρακτήρων που ορίζει ένα μοτίβο αναζήτησης. Χρησιμοποιείται για αναζήτηση, ταίριασμα και επεξεργασία κειμένου στις περισσότερες γλώσσες προγραμματισμού και στους επεξεργαστές κειμένου.

Τι κάνει η καθολική σημαία; Χωρίς την καθολική σημαία, η αναζήτηση συνήθως σταματά μετά το πρώτο ταίριασμα. Με την καθολική σημαία (g), η αναζήτηση συνεχίζεται και αναφέρει κάθε ταίριασμα στο κείμενο. Αυτό το εργαλείο αναζητά πάντα όλα τα ταιριάσματα κατά την καταμέτρησή τους, ανεξάρτητα από τη σημαία που έχει επιλεγεί.

Πώς ταιριάζω μια κυριολεκτική τελεία ή άλλον ειδικό χαρακτήρα; Τοποθετήστε μια ανάστροφη κάθετο πριν από αυτόν. Για παράδειγμα, το \. ταιριάζει με μια κυριολεκτική τελεία αντί για «οποιονδήποτε χαρακτήρα», που είναι η σημασία του . χωρίς διαφυγή.

Ποια είναι η διαφορά μεταξύ .* και .*?; Το .* είναι άπληστο και ταιριάζει με όσο το δυνατόν περισσότερους χαρακτήρες. Το .*? είναι τεμπέλικο και ταιριάζει με όσο το δυνατόν λιγότερους χαρακτήρες, ενώ εξακολουθεί να επιτρέπει στο υπόλοιπο μοτίβο να επιτύχει.

Γιατί το εργαλείο αναφέρει ότι το κείμενο δεν ταιριάζει πλήρως, ενώ ταιριάζει κάθε γραμμή; Ο έλεγχος ολόκληρου κειμένου αντιμετωπίζει το κείμενο ως μία συμβολοσειρά, μαζί με τις αλλαγές γραμμής. Ένα μοτίβο όπως το \d+ ταιριάζει ξεχωριστά σε κάθε γραμμή των 12 και 34, αλλά οι δύο γραμμές μαζί με την αλλαγή γραμμής μεταξύ τους δεν αποτελούνται μόνο από ψηφία, επομένως η απάντηση για ολόκληρο το κείμενο είναι αρνητική. Για να ταιριάξετε κείμενο που εκτείνεται σε πολλές γραμμές, το μοτίβο πρέπει να καλύπτει και τις αλλαγές γραμμής, για παράδειγμα με το [\s\S]+.

Πώς ελέγχω ότι μια ολόκληρη συμβολοσειρά ταιριάζει με ένα μοτίβο και όχι μόνο ένα τμήμα της; Προσθέστε ^ στην αρχή και $ στο τέλος του μοτίβου, για παράδειγμα το ^[0-9]+$ για συμβολοσειρά που περιέχει μόνο ψηφία.

Ακολουθεί αυτός ο ελεγκτής τους κανόνες regex άλλων γλωσσών προγραμματισμού; Αυτό το εργαλείο χρησιμοποιεί τον μηχανισμό κανονικών εκφράσεων που είναι ενσωματωμένος στη JavaScript. Η περισσότερη βασική σύνταξη, όπως οι κλάσεις χαρακτήρων και οι ποσοδείκτες, είναι κοινή σε γλώσσες όπως η Python, η Java και η Perl, αλλά ορισμένες λεπτομέρειες διαφέρουν, επομένως δεν είναι βέβαιο ότι ένα μοτίβο που λειτουργεί εδώ θα συμπεριφέρεται με τον ίδιο τρόπο παντού.

Παραπομπές

  1. "Regular expression." Wikipedia, Ίδρυμα Wikimedia. https://en.wikipedia.org/wiki/Regular_expression
  2. MDN Web Docs. "Regular expressions." Mozilla. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions
  3. Friedl, J. E. F. (2006). Mastering Regular Expressions. O'Reilly Media.