我将 python 2.7.12 与 pymongo 2.8.1、django 1.11.7、mongoengine 0.9.0 和 mongodb 3.4.10 一起使用。
我正在创建一个自定义用户模型,它在常规 mongodb 集合中插入文档。我从 mongoengine 继承了“Document”类来创建字符串密码字段。我一直在尝试为以下条件创建正则表达式模式:

  • 长度: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 的新手,我不确定正则表达式参数采用哪种输入,我也无法找到 StringField 的示例。那么我做错了什么?

    最佳答案

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

    你可以试试这个。每个条件都是使用先行添加的。如果你想添加更多的特殊字符。

    See demo.

    关于python - 为 mongoengine 0.9.0 StringField 设置正则表达式模式,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47227236/

    10-12 18:47