Δοκιμή regex
Δοκιμάστε κανονικές εκφράσεις JavaScript ζωντανά, με επισημασμένες αντιστοιχίες, ομάδες σύλληψης, αντικατάσταση και επεξήγηση κάθε στοιχείου του μοτίβου.
| # | Θέση | Αντιστοιχία | Ομάδες |
|---|
Επεξήγηση του μοτίβου
Προειδοποίηση: μια επαναλαμβανόμενη ομάδα περιέχει άλλον ανοιχτό ποσοτικό προσδιορισμό, για παράδειγμα (a+)+. Τέτοια μοτίβα μπορεί να χρειαστούν εκθετικό χρόνο σε κείμενο που σχεδόν ταιριάζει (καταστροφικό backtracking).
Πώς να χρησιμοποιήσετε τη δοκιμή regex
- Πληκτρολογήστε το μοτίβο σας στην Κανονική έκφραση, χωρίς τις κάθετους γύρω του. Οι κάθετοι και οι ενεργές σημαίες εμφανίζονται γύρω από το πεδίο, όπως στο
/pattern/g. - Επιλέξτε τις Σημαίες που χρειάζεστε:
g(global),i(αγνόηση πεζών/κεφαλαίων),m(multiline),s(dotAll),u(unicode) ήy(sticky). - Επικολλήστε το κείμενο προς αναζήτηση στο Κείμενο δοκιμής. Οι αντιστοιχίες επισημαίνονται καθώς πληκτρολογείτε και ο πίνακας απαριθμεί κάθε αντιστοιχία με τη θέση και τις ομάδες σύλληψής της.
- Για να δοκιμάσετε μια αντικατάσταση, συμπληρώστε το πεδίο Αντικατάσταση. Το πλαίσιο Αποτέλεσμα μετά την αντικατάσταση δείχνει το κείμενο με κάθε αντιστοιχία αντικατεστημένη, έτοιμο για αντιγραφή.
- Διαβάστε την Επεξήγηση του μοτίβου για να ελέγξετε τι κάνει κάθε τμήμα της regex σας. Δεν ξέρετε από πού να ξεκινήσετε; Πατήστε Φόρτωση παραδείγματος.
Τι δείχνει η δοκιμή
- Επισημασμένες αντιστοιχίες: κάθε αντιστοιχία στο κείμενο δοκιμής επισημαίνεται, ώστε να δείτε με μια ματιά τι πιάνεται και τι χάνεται.
- Πίνακας αντιστοιχιών: ο αριθμός κάθε αντιστοιχίας, η θέση της (μετατόπιση χαρακτήρων από την αρχή, με αρίθμηση από το 0), το κείμενο που ταίριαξε και η τιμή κάθε ομάδας σύλληψης. Οι ονομασμένες ομάδες όπως η
(?<year>\d{4})εμφανίζονται με το όνομά τους και οι ομάδες που δεν συμμετείχαν στην αντιστοιχία φαίνονται ως «(δεν ταίριαξε)». Εμφανίζονται οι πρώτες 1.000 αντιστοιχίες. - Αντικατάσταση: το κείμενο αντικατάστασης χρησιμοποιεί σύνταξη JavaScript:
$1ή$2για αριθμημένες ομάδες,$<name>για ονομασμένες ομάδες,$&για ολόκληρη την αντιστοιχία και$$για κυριολεκτικό σύμβολο δολαρίου. Χωρίς τη σημαίαg, αντικαθίσταται μόνο η πρώτη αντιστοιχία. - Επεξήγηση: το μοτίβο χωρίζεται σε στοιχεία (κυριολεκτικό κείμενο, κλάσεις χαρακτήρων, άγκυρες, ομάδες, ποσοτικοί προσδιορισμοί, lookarounds, αναφορές προς τα πίσω), το καθένα με σύντομη περιγραφή. Οι φωλιασμένες ομάδες εσοχοποιούνται, κάτι που κάνει τα μεγάλα μοτίβα πολύ ευκολότερα στον έλεγχο.
Οι σημαίες με δυο λόγια
| Σημαία | Αποτέλεσμα |
|---|---|
g |
Βρίσκει όλες τις αντιστοιχίες αντί να σταματά στην πρώτη |
i |
Αγνοεί τη διαφορά πεζών και κεφαλαίων |
m |
Τα ^ και $ ταιριάζουν στην αρχή και στο τέλος κάθε γραμμής |
s |
Η . ταιριάζει και με αλλαγές γραμμής |
u |
Πλήρης λειτουργία Unicode: τα \u{…}, \p{…} και τα emoji αντιμετωπίζονται ως μεμονωμένοι χαρακτήρες |
y |
Sticky: κάθε αντιστοιχία πρέπει να ξεκινά ακριβώς εκεί όπου τελείωσε η προηγούμενη |
Καταστροφικό backtracking
Ορισμένα μοτίβα χρειάζονται εκθετικό χρόνο σε κείμενο που σχεδόν ταιριάζει. Το κλασικό παράδειγμα είναι το (a+)+$ που δοκιμάζεται σε μεγάλη σειρά από a και ένα b στο τέλος: η μηχανή δοκιμάζει κάθε τρόπο διαχωρισμού των a ανάμεσα στους δύο ποσοτικούς προσδιορισμούς πριν τα παρατήσει. Αυτό το πρόβλημα, γνωστό ως ReDoS, έχει ρίξει πραγματικούς ιστότοπους.
Το εργαλείο προστατεύει το πρόγραμμα περιήγησής σας με τρεις τρόπους. Η αντιστοίχιση εκτελείται σε worker στο παρασκήνιο που σταματά μετά από 1,5 δευτερόλεπτο· το κείμενο δοκιμής περιορίζεται σε 100.000 χαρακτήρες· και η επεξήγηση σας προειδοποιεί όταν μια επαναλαμβανόμενη ομάδα περιέχει άλλον ανοιχτό ποσοτικό προσδιορισμό. Όταν ένα μοτίβο λήξει χρονικά, ξαναγράψτε το ώστε κάθε χαρακτήρας να μπορεί να ταιριάξει με έναν μόνο τρόπο, για παράδειγμα a+$ αντί για (a+)+$.
Συχνές ερωτήσεις
Ποια παραλλαγή regex χρησιμοποιεί το εργαλείο;
Χρησιμοποιεί τη μηχανή JavaScript (ECMAScript) του προγράμματος περιήγησής σας, ακριβώς όπως θα έκαναν τα new RegExp() και String.prototype.replace() στον κώδικά σας. Η περισσότερη σύνταξη είναι κοινή με PCRE, Python και Java, αλλά ορισμένα χαρακτηριστικά διαφέρουν: οι possessive ποσοτικοί προσδιορισμοί και οι ατομικές ομάδες δεν υπάρχουν στη JavaScript, ενώ το lookbehind υποστηρίζεται σε όλα τα σημερινά προγράμματα περιήγησης.
Γιατί το μοτίβο μου βρίσκει μόνο μία αντιστοιχία;
Η σημαία g είναι απενεργοποιημένη. Χωρίς αυτήν, η JavaScript σταματά μετά την πρώτη αντιστοιχία και η αντικατάσταση αλλάζει μόνο εκείνη.
Πώς ταιριάζω μια κυριολεκτική τελεία, αγκύλη ή ερωτηματικό;
Βάλτε μπροστά μια ανάστροφη κάθετο: \., \[, \?. Η επεξήγηση δείχνει τους χαρακτήρες με escape ως «(με escape)», ώστε να το ελέγξετε.
Στέλνεται κάπου το κείμενό μου;
Όχι. Το μοτίβο και το κείμενο επεξεργάζονται μόνο στο πρόγραμμα περιήγησής σας, κάτι που κάνει το εργαλείο ασφαλές για αρχεία καταγραφής ή δεδομένα με προσωπικές πληροφορίες.
Γιατί η θέση διαφέρει από τη στήλη στον επεξεργαστή μου;
Οι θέσεις μετρούν χαρακτήρες από το 0, σε όλες τις γραμμές, όπως το match.index της JavaScript. Οι αλλαγές γραμμής μετρούν ως ένας χαρακτήρας και ένα emoji εκτός του Basic Multilingual Plane μετρά ως δύο.
Σχετικά εργαλεία
- Μορφοποίηση και επικύρωση JSON Δωρεάν μορφοποίηση και επικύρωση JSON που κάνει beautify, minify και έλεγχο του JSON στο πρόγραμμα περιήγησής σας, με συντακτικά σφάλματα ανά γραμμή και στήλη.
- Κωδικοποίηση και αποκωδικοποίηση URL Δωρεάν κωδικοποίηση και αποκωδικοποίηση URL. Κωδικοποιήστε παραμέτρους ή πλήρη URL με percent-encoding, αποκωδικοποιήστε ακολουθίες %XX και το + ως κενό.
- Δημιουργός hash Δημιουργήστε hash MD5, SHA-1, SHA-256 και SHA-512 για κείμενο ή αρχεία οποιουδήποτε μεγέθους και επαληθεύστε αθροίσματα ελέγχου στο πρόγραμμα περιήγησής σας.