Python-Regex: das Passwort muss mindestens einen Großbuchstaben und Zahl
Ich Tue, Formular-Validierung für ein Passwort mit Python und Flask. Das Passwort muss mindestens einen Großbuchstaben und mindestens eine Zahl.
Meine aktuelle gescheiterten Versuch...
re.compile(r'^[A-Z\d]$')
'\d.*[A-Z]|[A-Z].*\d'
- Würden Sie bitte erklären Sie Ihre regex? Es funktioniert denke ich...
- Tatsächlich, es funktioniert nicht.
- Es funktioniert. Ich habe gerade getestet an 20 verschiedenen Saiten.
- sieht mir Recht sein. Wie scheitert es?
- Es funktioniert auf rubular, aber nicht in meinem code. Lassen Sie mich überprüfen Sie, meinen code auf und gelangen zurück an Sie alle. Sie sollten auch eine Antwort mit "Antwort auf Ihre Frage" - button, so kann ich Ihnen die Antwort für die Frage.
- Habe es an die Arbeit. Meine Logik ausgeschaltet war. Dank einer Tonne, Sie hat mich gerettet eine Menge Zeit!
- Die wichtigste Voraussetzung, die Sie verhängen kann auf Kennwörter eine minimale Länge.
- IMO: ich würde einfach zwei getrennte Prüfungen an einem regex für "übernimmt diese enthalten einen Brief" und ein weiterer regex für "ist das eine Zahl enthalten". Vielleicht mehr Sinn machen in der Zukunft.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können wir die Muster
'\d.*[A-Z]|[A-Z].*\d'
suchen Sie nach Einträgen, die mindestens einen Großbuchstaben und eine Zahl. Logisch gesehen gibt es nur zwei Möglichkeiten, einen Großbuchstaben und eine Zahl kann in einer Zeichenfolge angezeigt werden. Entweder der Brief kommt zuerst und die Nummer oder nach der Nummer und dem Buchstaben nach.Rohr | steht für "ODER", also schauen wir uns jede Seite separat.
\d.*[A-Z]
entspricht, eine Zahl, gefolgt von einem Großbuchstaben,[A-Z].*\d
entspricht einem beliebigen Großbuchstaben, gefolgt von einer Zahl.Andere Möglichkeit ist die Verwendung eines lookahead.
Sehen demo auf regex101
Den lookahead auf
^
start überprüft, ob eine[A-Z]
Voraus ist. Wenn dem so ist entspricht einer Ziffer.Reguläre Ausdrücke nicht über einen UND-operator, so ist es ziemlich schwer zu schreiben, ein regex-matches die Gültigkeit der Passwörter, wenn Gültigkeit ist definiert durch etwas UND noch etwas UND noch etwas.
Aber, regulären Ausdrücken zu tun haben, ODER Veranstalter, so gelten Sie nur DeMorgan ' s theorem, und schreiben ein regex-matches ungültige Passwörter:
nichts mit keine zahlen ODER etwas mit keine Großbuchstaben
Also:
Wenn alles passt, dann ist es ein ungültiges Kennwort.
Entsprechen Zeichenfolge, die enthält mindestens eine Ziffer, verwenden Sie:
Ähnliche regex gilt zu prüfen, für die die groß - /Kleinschreibung.