Ο προγραμματισμός έχει διευκολύνει την αντιμετώπιση δομημένων και μη δομημένων δεδομένων κειμένου. Εργαλεία όπως οι κανονικές εκφράσεις και οι εξωτερικές βιβλιοθήκες κάνουν αυτές τις εργασίες πολύ πιο εύκολες.
Μπορείτε να χρησιμοποιήσετε τις περισσότερες γλώσσες, συμπεριλαμβανομένων των Python και JavaScript, για να επικυρώσετε διευθύνσεις URL χρησιμοποιώντας μια τυπική έκφραση. Αυτό το παράδειγμα regex δεν είναι τέλειο, αλλά μπορείτε να το χρησιμοποιήσετε για να ελέγξετε διευθύνσεις URL για απλές περιπτώσεις χρήσης.
Μια τυπική έκφραση για την επικύρωση μιας διεύθυνσης URL
Το regex για την επικύρωση μιας διεύθυνσης URL που παρουσιάζεται σε αυτό το άρθρο δεν είναι τέλειο. Μπορεί να υπάρχουν πολλά παραδείγματα έγκυρων διευθύνσεων URL που ενδέχεται να αποτύχουν σε αυτήν την επικύρωση regex. Αυτό περιλαμβάνει διευθύνσεις URL που περιλαμβάνουν διευθύνσεις IP, χαρακτήρες που δεν είναι ASCII και πρωτόκολλα όπως το FTP. Το ακόλουθο regex επικυρώνει μόνο τις πιο συνηθισμένες διευθύνσεις URL.
Το regex θα θεωρήσει μια διεύθυνση URL έγκυρη εάν πληροί τις ακόλουθες προϋποθέσεις:
- Η συμβολοσειρά θα πρέπει να ξεκινά με ένα από τα δύο http ή https ακολουθούμενη από ://.
- Το συνδυασμένο μήκος του υποτομέα και του τομέα πρέπει να είναι μεταξύ 2 και 256. Θα πρέπει να περιέχει μόνο αλφαριθμητικούς χαρακτήρες ή/και ειδικούς χαρακτήρες.
- Ο TLD (Top-Level Domain) θα πρέπει να περιέχει μόνο αλφαβητικούς χαρακτήρες και θα πρέπει να αποτελείται από δύο έως έξι χαρακτήρες.
- Το τέλος της συμβολοσειράς URL μπορεί να περιέχει αλφαριθμητικούς χαρακτήρες ή/και ειδικούς χαρακτήρες. Και θα μπορούσε να επαναληφθεί μηδέν ή περισσότερες φορές.
Μπορείτε να επικυρώσετε μια διεύθυνση URL σε JavaScript χρησιμοποιώντας την ακόλουθη τυπική έκφραση:
^(http (s):\/\/.)[-a-zA-Z0-9@:%._\+~#=]{2.256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&//=]*)$
Ομοίως, μπορείτε να χρησιμοποιήσετε το ακόλουθο regex για να επικυρώσετε μια διεύθυνση URL στην Python:
^((http|https)://)[-a-zA-Z0-9@:%._\\+~#?&//=]{2,256}\\.[a-z]{2,6}\\b([-a-zA-Z0-9@:%._\\+~#?&//=]*)$
Οπου:
- (http|https)://) βεβαιωθείτε ότι η συμβολοσειρά ξεκινά είτε με http είτε με https ακολουθούμενη από ://.
- [-a-zA-Z0-9@:%._\\+~#?&//=] υποδεικνύει αλφαριθμητικούς χαρακτήρες ή/και ειδικούς χαρακτήρες. Η πρώτη παρουσία αυτού του συνόλου αντιπροσωπεύει το σύνολο των χαρακτήρων που επιτρέπεται στο τμήμα υποτομέα και τομέα. Ενώ η δεύτερη παρουσία αυτού του συνόλου αντιπροσωπεύει το σύνολο των χαρακτήρων που επιτρέπεται στη συμβολοσειρά ερωτήματος ή στο τμήμα υποκαταλόγου.
- {2,256} αντιπροσωπεύει 2 έως 256 (συμπεριλαμβανομένων και των δύο) φορές ένδειξη εμφάνισης. Αυτό υποδηλώνει ότι το συνδυασμένο μήκος του υποτομέα και του τομέα πρέπει να είναι μεταξύ δύο και 256.
- \. αντιπροσωπεύει τον χαρακτήρα τελείας.
- [a-z]{2,6} σημαίνει οποιαδήποτε πεζά γράμματα από το a έως το z με μήκος μεταξύ δύο και έξι. Αυτό αντιπροσωπεύει το σύνολο των χαρακτήρων που επιτρέπεται στο τμήμα τομέα ανώτατου επιπέδου.
- \σι αντιπροσωπεύει το όριο μιας λέξης, δηλαδή την αρχή μιας λέξης ή το τέλος μιας.
- * είναι ένας τελεστής επανάληψης που υποδεικνύει μηδέν ή περισσότερα αντίγραφα της συμβολοσειράς ερωτήματος, των παραμέτρων ή των υποκαταλόγων.
- ^ και $ υποδεικνύουν την αρχή και το τέλος της συμβολοσειράς αντίστοιχα.
Εάν αισθάνεστε άβολα με την παραπάνω έκφραση, ρίξτε μια ματιά ένας οδηγός αρχαρίων για κανονικές εκφράσεις πρώτα. Οι κανονικές εκφράσεις χρειάζονται λίγο χρόνο για να συνηθίσουν. Εξερευνώντας ορισμένα παραδείγματα όπως επικύρωση στοιχείων λογαριασμού χρήστη χρησιμοποιώντας κανονικές εκφράσεις θα πρέπει να βοηθήσει.
Το παραπάνω regex ικανοποιεί τους ακόλουθους τύπους διευθύνσεων URL:
- https://www.something.com/
- http://www.something.com/
- https://www.something.edu.co.in
- http://www.url-with-path.com/path
- https://www.url-with-querystring.com/?url=has-querystring
- http://url-without-www-subdomain.com/
- https://mail.google.com
Χρήση της κανονικής έκφρασης σε ένα πρόγραμμα
Ο κώδικας που χρησιμοποιείται σε αυτό το έργο είναι διαθέσιμος στο α Αποθετήριο GitHub και είναι δωρεάν για χρήση βάσει της άδειας MIT.
Αυτή είναι μια προσέγγιση Python για την επικύρωση μιας διεύθυνσης URL:
εισαγωγή σχετικά με
defvalidateURL(url):
regex = "^((http|https)://)[-a-zA-Z0-9@:%._\\+~#?&//=]{2,256}\\.[a-z]{2,6}\\b([-a-zA-Z0-9@:%._\\+~#?&//=]*)$"
r = re.compile (regex)αν (σχετικά με.Αναζήτηση(r, url)):
Τυπώνω("Εγκυρος")
αλλού:
Τυπώνω("Δεν είναι έγκυρη")
url1 = "https://www.linkedin.com/"
validateURL(url1)
url2 = "http://apple"
validateURL(url2)
url3 = "iywegfuykegf"
validateURL(url3)
url4 = "https://w"
validateURL(url4)
Αυτός ο κώδικας χρησιμοποιεί Python's re.compile() μέθοδος μεταγλώττισης του μοτίβου κανονικής έκφρασης. Αυτή η μέθοδος δέχεται το μοτίβο regex ως παράμετρο συμβολοσειράς και επιστρέφει ένα αντικείμενο μοτίβου regex. Αυτό το αντικείμενο μοτίβου regex χρησιμοποιείται περαιτέρω για την αναζήτηση εμφανίσεων του μοτίβου regex μέσα στη συμβολοσειρά προορισμού χρησιμοποιώντας το έρευνα() μέθοδος.
Αν βρει τουλάχιστον ένα ταίρι, το έρευνα() μέθοδος επιστρέφει την πρώτη αντιστοίχιση. Σημειώστε ότι εάν θέλετε να αναζητήσετε όλες τις αντιστοιχίσεις στο μοτίβο από τη συμβολοσειρά προορισμού, πρέπει να χρησιμοποιήσετε το re.findall() μέθοδος.
Η εκτέλεση του παραπάνω κώδικα θα επιβεβαιώσει ότι η πρώτη διεύθυνση URL είναι έγκυρη, αλλά οι υπόλοιπες όχι.
Ομοίως, μπορείτε να επικυρώσετε μια διεύθυνση URL σε JavaScript χρησιμοποιώντας τον ακόλουθο κώδικα:
λειτουργίαvalidateURL(url) {
αν(/^(http (s):\/\/.)[-a-zA-Z0-9@:%._\+~#=]{2.256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&//=]*)$/g.test (url)) {
console.log('Εγκυρος');
} αλλού {
console.log('Δεν είναι έγκυρη');
}
}
validateURL("https://www.linkedin.com/");
validateURL("http://apple");
validateURL("iywegfuykegf");
validateURL("https://w");
Και πάλι, η εκτέλεση αυτού του κώδικα θα επιβεβαιώσει ότι η πρώτη διεύθυνση URL είναι έγκυρη και ότι τα υπόλοιπα είναι άκυρα. Χρησιμοποιεί JavaScript αγώνας() μέθοδος αντιστοίχισης της συμβολοσειράς στόχου με ένα μοτίβο κανονικής έκφρασης.
Επικύρωση σημαντικών δεδομένων χρησιμοποιώντας κανονικές εκφράσεις
Μπορείτε να χρησιμοποιήσετε κανονικές εκφράσεις για αναζήτηση, αντιστοίχιση ή ανάλυση κειμένου. Χρησιμοποιούνται επίσης για επεξεργασία φυσικής γλώσσας, αντιστοίχιση προτύπων και λεξιλογική ανάλυση.
Μπορείτε να χρησιμοποιήσετε αυτό το ισχυρό εργαλείο για να επικυρώσετε σημαντικούς τύπους δεδομένων, όπως αριθμούς πιστωτικών καρτών, στοιχεία λογαριασμού χρήστη, διευθύνσεις IP και άλλα.