为mongoengine 0.9.0 StringField设置正则表达式模式

时间:2017-11-10 16:29:33

标签: python regex django pymongo mongoengine

我使用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 个答案:

答案 0 :(得分:2)

^(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])(?=.*[@#$%^&+=]).{8,25}$

你可以试试这个。使用lookahead添加每个条件。如果你愿意,可以添加更多特殊字符。

See demo.