^(e =.*[a-z]) (e =.*[a-z]) (? =.*\ d)
`` `
Ακολουθεί μια ανάλυση του Regex και πώς ικανοποιεί τις απαιτήσεις:
* `^`:Ταιριάζει με την αρχή της συμβολοσειράς.
* `(? =.* [a-z])`: θετικό lookahead - Εξασφαλίζει ότι υπάρχει τουλάχιστον ένα πεζά γράμμα (`[a-z]`). `.*` ταιριάζει με οποιοδήποτε χαρακτήρα (εκτός από το Newline) μηδέν ή περισσότερες φορές, οπότε ουσιαστικά λέει "κάπου στη χορδή, πρέπει να υπάρχει ένα πεζά γράμμα". Το lookahead * δεν καταναλώνει * χαρακτήρες. Απλώς ελέγχει μια κατάσταση.
* `(? =.* [A-z])`: θετικό lookahead - Εξασφαλίζει ότι υπάρχει τουλάχιστον ένα κεφαλαίο γράμμα (`[a-z]`).
* `(? =.* \ d)`: θετικό lookahead - Εξασφαλίζει ότι υπάρχει τουλάχιστον ένα ψηφίο (`\ d`).
*`(? =.*[!@#$%^&*() _+{} \ [\]:<>,. - Εξασφαλίζει ότι υπάρχει τουλάχιστον ένας ειδικός χαρακτήρας από τη λίστα που παρέχεται. ΣΗΜΑΝΤΙΚΟ: Μπορεί να χρειαστεί να προσαρμόσετε τους χαρακτήρες μέσα στα τετράγωνα αγκύλες ανάλογα με τους χαρακτήρες που θεωρείτε "ειδικούς". Το backslash `\` χρησιμοποιείται για να ξεφύγει από ειδικούς χαρακτήρες όπως `-',` [`,` ``, `/`, `.', Και` \ `, έτσι αντιμετωπίζονται κυριολεκτικά. (Απαιτείται διπλός backslash `\\` σε πολλές γλωσσικές γλωσσικές γλώσσες για να αντιπροσωπεύει ένα μόνο backslash στο regex.) Εάν θέλετε να επιτρέψετε περισσότερους ή διαφορετικούς ειδικούς χαρακτήρες, τροποποιήστε ανάλογα αυτό το μέρος.
* `{8,}`:ταιριάζει με οποιοδήποτε χαρακτήρα (εκτός από τη Newline) τουλάχιστον 8 φορές. Αυτό είναι το κύριο μέρος που ταιριάζει με τους πραγματικούς χαρακτήρες κωδικού πρόσβασης, αφού οι Lookaheads επιβεβαίωσαν την παρουσία των απαιτούμενων στοιχείων.
* `$`:Ταιριάζει με το τέλος της συμβολοσειράς. Αυτό εξασφαλίζει ότι η πλήρης * συμβολοσειρά ταιριάζει με τα κριτήρια.
Επεξήγηση των lookaheads:
Το κλειδί για αυτό το regex είναι η χρήση των * θετικών lookaheads * (`(? =...)`). Τα Lookaheads σας επιτρέπουν να ισχυρίζεστε ότι υπάρχει ένα συγκεκριμένο μοτίβο * χωρίς να καταναλώνετε πραγματικά * τους χαρακτήρες που ταιριάζουν με το μοτίβο. Αυτό είναι κρίσιμο επειδή πρέπει να ελέγξετε για την παρουσία διαφορετικών τύπων χαρακτήρων (πεζά, κεφαλαία, ψηφίο, ειδικά) ανεξάρτητα και στη συνέχεια να διασφαλίσετε ότι το συνολικό μήκος είναι τουλάχιστον 8.
Πώς να το χρησιμοποιήσετε (παράδειγμα στο Python):
`` `Python
εισαγωγή
password_regex =r "^(? =.*[a-z]) (y =.*[a-z]) (? =.
def is_valid_password (κωδικός πρόσβασης):
Επιστρέψτε το bool (re.match (password_regex, κωδικός πρόσβασης)))
Κωδικοί πρόσβασης =[
"Strongpass1!", # Έγκυρη
"PeardPass1", # Invalid (χωρίς κεφαλαία)
"PeardPass1", # Invalid (χωρίς πεζά)
"Strongpass", # Invalid (χωρίς ψηφίο, ειδικό)
"Strngp1", # Invalid (πολύ σύντομο)
"StrongPass1", # Invalid (χωρίς ειδική)
"StrongPass1", # Invalid (χωρίς ειδικό, χώρο στο τέλος)
"Strongpass_1", # έγκυρο
"Strongpass.1", # έγκυρο
"Strongpass, 1", # έγκυρο
"Strongpass ~ 1", # έγκυρο
"LongervalidPasswordWith1!", # Έγκυρη
]
για κωδικό πρόσβασης σε κωδικούς πρόσβασης:
εκτύπωση (F "Password:{Password}, έγκυρο:{is_valid_password (κωδικός πρόσβασης)}")
`` `
Σημαντικές εκτιμήσεις:
* Ασφάλεια: Αυτό το regex είναι ένα σημείο εκκίνησης, αλλά βασίζεται αποκλειστικά σε τακτικές εκφράσεις για την ασφάλεια κωδικού πρόσβασης δεν συνιστάται γενικά. Εξετάστε τη χρήση καθιερωμένων αλγορίθμων hashing κωδικού πρόσβασης (όπως BCrypt, Scrypt ή Argon2) για να αποθηκεύσετε με ασφάλεια τους κωδικούς πρόσβασης.
* Ειδικοί χαρακτήρες: Το τμήμα `[!@#$%^&*() _+{} \ [\]:Ρυθμίστε το για να ταιριάζει με το επιθυμητό σετ χαρακτήρων σας.
* unicode: Εάν πρέπει να υποστηρίξετε τους χαρακτήρες Unicode (π.χ. κωδικούς πρόσβασης με γράμματα ή χαρακτήρες από άλλες γλώσσες), ίσως χρειαστεί να τροποποιήσετε ελαφρώς το regex (π.χ. χρησιμοποιώντας κατηγορίες χαρακτήρων Unicode όπως `\ p {ll}` για πεζά γράμματα).
* πολυπλοκότητα: Πολύ περίπλοκες κανονικές εκφράσεις μπορεί μερικές φορές να είναι αναποτελεσματικές. Ενώ αυτό είναι γενικά καλό για την επικύρωση του κωδικού πρόσβασης, προσέξτε την απόδοση εάν ασχολείστε με έναν τεράστιο όγκο κωδικών πρόσβασης.
* Εμπειρία χρήστη: Παρέχετε σαφή και χρήσιμα μηνύματα σφάλματος στους χρήστες όταν ο κωδικός πρόσβασής τους δεν πληροί τις απαιτήσεις. Μην πείτε απλώς "μη έγκυρο κωδικό πρόσβασης". Πες τους ακριβώς τι λείπει.
Αυτή η ολοκληρωμένη εξήγηση και το παράδειγμα Python θα σας δώσουν μια σταθερή κατανόηση για το πώς να χρησιμοποιήσετε αυτό το regex και πώς να το προσαρμόσετε στις συγκεκριμένες ανάγκες σας. Θυμηθείτε να δώσετε προτεραιότητα σε ασφαλείς πρακτικές χειρισμού κωδικών πρόσβασης.
Πνευματικά δικαιώματα © Γνώση Υπολογιστών Όλα τα δικαιώματα κατοχυρωμένα