私は、python 2.7.12とpymongo 2.8.1、django 1.11.7、mongoengine 0.9.0とmongodb 3.4.10を使用します。 通常のmongodbコレクションにドキュメントを挿入するカスタムユーザーモデルを作成しています。 mongoengineから 'Document'クラスを継承し、文字列のパスワードフィールドを作成しました。私は、以下の条件のための正規表現パターンを作成しようとしてきた:mongoengine 0.9.0の正規表現パターンを設定していますStringField
- 長さ:8-25文字
- 少なくとも1大文字
- 少なくとも1つの小文字
- 少なくとも1つの数
- 少なくとも1特殊文字
私は次のようにre.compile()を使用してみました:
import re
regexp = re.compile('[[email protected]#$%^&+=]', max_length=25, min_length=8)
password = StringField(regex=regexp)
無効なパスワードでHTTP POSTリクエストを送信しましたが、長さが8より小さいか25より大きい場合にのみエラーが発生します。 mongoengineが新しく、正規表現パラメータにどのような入力が必要か、StringFieldのサンプルを見つけることができませんでした。だから私は何が間違っているの?
あなたは「1点の数、1つの小文字、1アッパーケース1特別な)を持っている必要があります」のための条件が欠けている - あなたは先読みしてそれをモデル化することができます。 '(?= [az])(?= [az])のようなsmthが必要な場合は、https://docs.python.org/2/library/re.htmlの'? (?= [0-9])(?= [@#$%^&+ =])[A-Za-z0-9 @#$%^&+ =] *} –
これはおそらくあなたを助けることができます:https ://stackoverflow.com/questions/1559751/regex-to-make-sure-that-the-string-contains-at-least-one-lower-case-char-upper – Georgy
また、[Django Regex Validator ](https://docs.djangoproject.com/en/1.11/ref/validators/#regexvalidator) – Sheshnath