【发布时间】:2018-04-23 22:41:51
【问题描述】:
我将 python 2.7.12 与 pymongo 2.8.1、django 1.11.7、mongoengine 0.9.0 和 mongodb 3.4.10 一起使用。 我正在创建一个自定义用户模型,它将文档插入到常规的 mongodb 集合中。我从 mongoengine 继承了“文档”类来创建字符串密码字段。我一直在尝试为以下条件创建一个正则表达式模式:
- 长度:8-25 个字符
- 至少 1 个大写字母
- 至少 1 个小写字母
- 至少 1 个号码
- 至少 1 个特殊字符
我尝试通过以下方式使用 re.compile():
import re
regexp = re.compile('[A-Za-z0-9@#$%^&+=]', max_length=25, min_length=8)
password = StringField(regex=regexp)
我发送了带有无效密码的 HTTP POST 请求,它仅在长度小于 8 或大于 25 时抛出错误,否则它们通过。 我是 mongoengine 的新手,我不确定 regex 参数需要什么样的输入,我也无法找到 StringField 的示例。那我做错了什么?
【问题讨论】:
-
您缺少“必须有 1 个数字、1 个小写字母、1 个大写字母 1 个特殊字符”的条件 - 您可以使用前瞻来建模。看看docs.python.org/2/library/re.html 的
(?=...)- 你可能需要像 "(?=[AZ])(?=[az])(?=[0-9])(?=[@#$%^&+ =])[A-Za-z0-9@#$%^&+=]*} -
您也可以查看Django Regex Validator
标签: python regex django pymongo mongoengine