我无法对我的mongoengine模型类中的输入数据执行验证

问题描述 投票:0回答:1
class TextBoxValues(DynamicDocument):
    entity_id = StringField(max_length=200, required=True) 
    textbox_type = StringField(max_length=1000, required=True)  
    regexp = re.compile('[A-Za-z]')
    entity_value = StringField(regex=regexp,max_length=None, required=True) 

我正在使用regex参数执行对我不起作用的验证,它仍然接受任何格式的输入,为什么?

python django regex validation mongoengine
1个回答
0
投票

提供给StringField(regex=)的正则表达式实际上应该是一个字符串,但是如果给它一个编译后的正则表达式也可以。

问题实际上是您的正则表达式。它应该是regexp=r'^[A-Za-z]+$',如注释中建议的@wiktor-stribiżew。

下面的最小示例演示了正则表达式可以按预期工作

from mongoengine import *
connect()    # connect to 'test' database

class TextBoxValues(Document):
    entity_value = StringField(regex=r'^[A-Za-z]+$')

TextBoxValues(entity_value="AZaz").save() # passes validation

TextBoxValues(entity_value="AZaz1").save() # raises ValidationError (String value did not match validation regex: ['entity_value'])
© www.soinside.com 2019 - 2024. All rights reserved.