/ / / PHP (regex) - τι είναι αυτό; Παραδείγματα και επικύρωση κανονικής έκφρασης

PHP (regex) - τι είναι αυτό; Παραδείγματα και επικύρωση κανονικής έκφρασης

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

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

php regex

Κανονικές εκφράσεις σε PHP

Η γλώσσα PHP περιέχει τρεις μηχανισμούς για την εργασίαΟι τυπικές εκφράσεις είναι "ereg", "mb_ereg" και "preg". Η πιο συνηθισμένη είναι η διεπαφή "preg", η οποία παρέχει πρόσβαση στη βιβλιοθήκη PCRE regex, που αναπτύχθηκε αρχικά για τη γλώσσα Perl, η οποία περιλαμβάνεται στην PHP. Οι λειτουργίες Preg αναζητούν αντιστοιχίσεις σε μια δεδομένη συμβολοσειρά κειμένου σύμφωνα με ένα συγκεκριμένο μοτίβο στη γλώσσα κανονικής έκφρασης

Βασικά σύνταξης

παραδείγματα κανονικών εκφράσεων

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

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

Για παράδειγμα, στην έκφραση / d {3} -d {2} -d {2} / m ο διαχωριστής θα είναι "/", ακολουθούμενο από το μοτίβο και το σύμβολο "Μ" θα είναι τροποποιητής.

Κωδικοποιείται όλη η ισχύς των κανονικών εκφράσεωνχρησιμοποιώντας μεταχαρακτήρες. Ο κύριος μεταχαρακτήρας της γλώσσας είναι μια ανάστροφη κάθετο - "". Αλλάζει τον τύπο του επόμενου χαρακτήρα στον αντίθετο (δηλαδή, ένας συνηθισμένος χαρακτήρας γίνεται μεταχαρακτήρας και το αντίστροφο). Ένας άλλος σημαντικός μεταχαρακτήρας είναι η μπροστινή κάθετος "|", η οποία καθορίζει εναλλακτικές λύσεις για το μοτίβο. Περισσότερα παραδείγματα μεταχαρακτήρων:

^Έναρξη αντικειμένου ή γραμμής
(Έναρξη υποταγμάτων
),Τερματισμός υποδιαγράμματος
{Έναρξη ποσοτικοποίησης
}}Τέλος ποσοτικοποίησης
δδεκαδικό ψηφίο από 0 έως 9
Δοποιονδήποτε μη ψηφίο χαρακτήρα
με τοκενό, κενό, καρτέλα
βσύμβολο λεξιλογίου

Η PHP αντιμετωπίζει το χώρο ως ξεχωριστό σημαντικό χαρακτήρα κατά την επεξεργασία κανονικών εκφράσεων, επομένως οι εκφράσεις ABCGDE και ABC WHERE είναι διαφορετικές.

Υποτμήματα

Στην PHP, τα κανονικά υποδιαγράμματα περικλείονται σε παρενθέσεις και μερικές φορές αναφέρονται ως "υποεκφράσεις". Εκτελούν τις ακόλουθες λειτουργίες:

  1. Επισήμανση εναλλακτικών λύσεων... Για παράδειγμα, το πρότυπο θερμότητα (μερικά | πουλιά |) ταιριάζει με τις λέξεις "Heat", "firebird" και "ψητό"... Και χωρίς παρένθεση, θα είναι απλώς μια κενή χορδή, "πουλί" και "ψητό".

  2. Ένα "συναρπαστικό" υπόστεγο. Αυτό σημαίνει ότι εάν ένα substring ταιριάζει με το μοτίβο, τότε όλα τα αποτελέσματα επιστρέφονται ως αποτέλεσμα. Για λόγους σαφήνειας, θα δώσουμε ένα παράδειγμα. Δεδομένου του ακόλουθου regex: ο νικητής λαμβάνει ((χρυσό | επίχρυσο) (μετάλλιο | κύπελλο)) - και μια συμβολοσειρά για να βρείτε αγώνες: "Ο νικητής λαμβάνει χρυσό μετάλλιο"... Εκτός από την αρχική φράση, η αναζήτηση θα επιστρέψει: "Χρυσό μετάλλιο", "Μετάλλιο", "χρυσό".

Τελεστές επανάληψης (Quadrifiers)

Όταν γράφετε κανονικές εκφράσεις, είναι πολύ συνηθισμένοείναι απαραίτητο να αναλυθούν οι επαναλήψεις αριθμών και συμβόλων. Αυτό δεν είναι πρόβλημα εάν δεν υπάρχουν πάρα πολλές επαναλήψεις. Τι γίνεται όμως αν δεν γνωρίζουμε τον ακριβή αριθμό τους; Σε αυτήν την περίπτωση, πρέπει να χρησιμοποιήσετε ειδικούς μεταχαρακτήρες.

Για να περιγράψουμε τις επαναλήψεις, χρησιμοποιούνται τετραπλασιαστές - μεταχαρακτήρες για τον καθορισμό του αριθμού. Τα Quadrifiers είναι δύο τύπων:

  • γενικά, κλειστά σε παρένθεση ·
  • συντομευμένη

Ο κοινός μετρητής αγγίζει το ελάχιστο καιο μέγιστος επιτρεπόμενος αριθμός επαναλήψεων ενός στοιχείου με τη μορφή δύο αριθμών σε σγουρά τιράντες, για παράδειγμα: x {2,5}. Εάν ο μέγιστος αριθμός επαναλήψεων είναι άγνωστος, παραλείπεται το δεύτερο όρισμα: x {2,}.

Οι συντομευμένοι ποσοτικοποιητές είναι σύμβολα για τις πιο συνηθισμένες επαναλήψεις για την αποφυγή περιττής υπερφόρτωσης σύνταξης. Χρησιμοποιούνται συνήθως τρεις συντομογραφίες:

1. * - μηδέν ή περισσότερες επαναλήψεις, που ισοδυναμεί με {0,}.

2. + - μία ή περισσότερες επαναλήψεις, δηλαδή {1,}.

3.; - μηδέν ή μόνο μία επανάληψη - {0,1}.

Παραδείγματα κανονικής έκφρασης

Για εκείνους που μαθαίνουν κανονικές εκφράσεις,παραδείγματα είναι το καλύτερο σεμινάριο. Θα δώσουμε μερικά που δείχνουν τις μεγάλες δυνατότητές τους με ελάχιστη προσπάθεια. Όλοι οι κωδικοί προγράμματος είναι πλήρως συμβατοί με PHP 4.x και νεότερες εκδόσεις. Για πλήρη κατανόηση της σύνταξης και της χρήσης όλων των χαρακτηριστικών της γλώσσας, προτείνουμε το βιβλίο του J. Friedl "Regular Expressions", το οποίο εξετάζει πλήρως τη σύνταξη και παρέχει παραδείγματα τυπικών εκφράσεων όχι μόνο στην PHP, αλλά και για το γλώσσες Python, Perl, MySQL, Java, Ruby και C #.

Έλεγχος της ορθότητας της διεύθυνσης email

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

Η λύση. Όπως με οποιαδήποτε γλώσσα προγραμματισμού, στην PHPΤα regexes επικύρωσης διεύθυνσης email μπορούν να εφαρμοστούν με πολλούς διαφορετικούς τρόπους και τα παραδείγματα σε αυτό το άρθρο δεν είναι η τελική και μόνη επιλογή. Επομένως, σε κάθε περίπτωση, θα παρέχουμε μια λίστα απαιτήσεων που πρέπει να ληφθούν υπόψη κατά τον προγραμματισμό και η συγκεκριμένη εφαρμογή εξαρτάται αποκλειστικά από τον προγραμματιστή.

Έτσι, η έκφραση επικύρωσης ηλεκτρονικού ταχυδρομείου θα πρέπει να ελέγξει τις ακόλουθες συνθήκες:

  1. Η παρουσία του συμβόλου @ στην αρχική συμβολοσειρά και η απουσία κενών.
  2. Το τμήμα τομέα της διεύθυνσης, ακολουθούμενο από το σύμβολο @, περιέχει μόνο έγκυρους χαρακτήρες για ονόματα τομέα. Το ίδιο ισχύει και για το όνομα χρήστη.
  3. Κατά την επαλήθευση του ονόματος χρήστη, πρέπειεντοπίστε την παρουσία ειδικών χαρακτήρων όπως η απόστροφη ή η κάθετη γραμμή. Τέτοιοι χαρακτήρες είναι δυνητικά επικίνδυνοι και μπορούν να περιέχονται σε επιθέσεις όπως η ένεση SQL. Αποφύγετε τέτοιες διευθύνσεις.
  4. Τα ονόματα χρήστη δέχονται μόνο μία περίοδο, η οποία δεν μπορεί να είναι ο πρώτος ή ο τελευταίος χαρακτήρας μιας γραμμής.
  5. Το όνομα τομέα πρέπει να περιέχει τουλάχιστον δύο και όχι περισσότερους από έξι χαρακτήρες.

Ένα παράδειγμα που λαμβάνει υπόψη όλες αυτές τις συνθήκες μπορεί να δει στο παρακάτω σχήμα.

email κανονικών εκφράσεων php

Επικύρωση διευθύνσεων URL

Μια εργασία. Ελέγξτε εάν η δεδομένη συμβολοσειρά κειμένου είναι έγκυρη διεύθυνση URL. Σημειώστε ξανά ότι οι κανονικές εκφράσεις επικύρωσης URL μπορούν να εφαρμοστούν με διάφορους τρόπους.

Η λύση. Η τελική μας έκδοση μοιάζει με αυτήν:

/ ^ (https?: //)? ((da-z.-> +). ([a-z. * [2,6]) ([/ w .-] *) * /? $ /

Τώρα ας αναλύσουμε τα συστατικά του με περισσότερες λεπτομέρειες χρησιμοποιώντας την εικόνα.

κανονικές εκφράσεις url

σημείο 1Δεν πρέπει να υπάρχουν χαρακτήρες μπροστά από τη διεύθυνση URL
σημείο 2Έλεγχος για το υποχρεωτικό πρόθεμα "http"
σημείο 3Δεν πρέπει να υπάρχουν σύμβολα
σημείο 4Εάν υπάρχει "s", η διεύθυνση URL υποδεικνύει μια ασφαλή σύνδεση "https"
σελ. 5Απαιτούμενο τμήμα "//"
σημείο 6Χωρίς σύμβολα
σελ. 7-9Έλεγχος της εγκυρότητας του τομέα πρώτου επιπέδου και της παρουσίας μιας κουκκίδας
σελ. 10-13Έλεγχος της ορθογραφίας του τομέα και της περιόδου δεύτερου επιπέδου
σελ. 14-17

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

Έλεγχος αριθμών πιστωτικών καρτών

Μια εργασία. Είναι απαραίτητο να ελέγξετε την ορθότητα του αριθμού πλαστικής κάρτας που έχετε εισαγάγει στα πιο συνηθισμένα συστήματα πληρωμής. Μια επιλογή εξετάζεται μόνο για κάρτες Visa και MasterCard.

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

Γράψτε μια γενική έκφραση που λαμβάνει υπόψηπιθανοί χώροι και παύλες είναι πιο δύσκολο από το να ρίχνεις όλους τους χαρακτήρες εκτός από τους αριθμούς. Επομένως, συνιστάται η χρήση του μετα-χαρακτήρα / D στην παράσταση, η οποία αφαιρεί όλους τους χαρακτήρες εκτός από τους αριθμούς.

Τώρα μπορείτε να πάτε απευθείας στοέλεγχος του αριθμού. Όλες οι εταιρείες πιστωτικών καρτών χρησιμοποιούν μια μοναδική μορφή αριθμού. Το παράδειγμα το χρησιμοποιεί και ο πελάτης δεν χρειάζεται να εισαγάγει το όνομα της εταιρείας - αναγνωρίζεται από τον αριθμό. Οι κάρτες Visa ξεκινούν πάντα με 4 και έχουν 13 ή 16 ψηφία. Η MasterCard ξεκινά στην περιοχή 51-55 με μήκος 16. Ως αποτέλεσμα, έχουμε την ακόλουθη έκφραση:

παραδείγματα κανονικών εκφράσεων

Πριν από την επεξεργασία της παραγγελίας, μπορείτε επιπλέον να ελέγξετε το τελευταίο ψηφίο του αριθμού, το οποίο υπολογίζεται χρησιμοποιώντας τον αλγόριθμο Luna.

Έλεγχος αριθμών τηλεφώνου

Μια εργασία. Έλεγχος της ορθότητας του καταχωρισμένου αριθμού τηλεφώνου.

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

+ CCC.NNNNNNNNNxEEEE, όπου:

- Το C είναι ένας κωδικός χώρας 1-3 ψηφίων.

- N - αριθμός έως 14 ψηφία.

- Το Ε είναι μια προαιρετική επέκταση.

Το συν είναι απαραίτητο και το x υπάρχει μόνο όταν απαιτείται επέκταση.

Ως αποτέλεσμα, έχουμε την ακόλουθη έκφραση:

^ + [0-9] {1,3}. [0-9] {4,14} (?: X. +); $

Αριθμοί στο εύρος

Μια εργασία. Πρέπει να βεβαιωθείτε ότι ένας ακέραιος αριθμός από ένα καθορισμένο εύρος ταιριάζει. Επιπλέον, απαιτείται οι τυπικές εκφράσεις να βρίσκουν μόνο αριθμούς από ένα εύρος τιμών.

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

Προσδιορίστε την ώρα από 1 έως 24^ (1 [0-2] | [1-9]) $
Ημέρα εντός μηνός 1-31^ (3 [01] | [12] [0-9] | [1-9]) $
Δεύτερο ή λεπτό 0-59^ [1-5]; [0-9] $
Ένας αριθμός από 1 έως 100^ (100 | [1-9]; [0-9]) $
Ημέρα του έτους 1 - 366^ (36 [0-6] | 3 [0-5] [0-9] | [12] [0-9] {2} | [1-9] [0-9]?) $

Εύρεση διεύθυνσης IP

Μια εργασία. Πρέπει να προσδιορίσετε εάν η καθορισμένη συμβολοσειρά είναι έγκυρη διεύθυνση IP IPv4 στην περιοχή 000.000.000.000-255.255.255.255.

Η λύση. Όπως σε κάθε εργασία στην PHP, υπάρχουν πολλές παραλλαγές μιας κανονικής έκφρασης. Για παράδειγμα, αυτό:

χώρος κανονικών εκφράσεων

Διαδικτυακός έλεγχος των εκφράσεων

email regex

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

Αλλά εμπιστευτείτε πλήρως τα αποτελέσματα των διαδικτυακών υπηρεσιώνδεν συνιστάται για όλους τους προγραμματιστές PHP. Ένα regex, γραμμένο και δοκιμασμένο προσωπικά, είναι ενημερωμένο και εγγυημένο ότι είναι χωρίς σφάλματα.

Αρέσει:
0
Δημοφιλή μηνύματα
Πνευματική Ανάπτυξη
Φαγητό
yup