表单上的正则表达式验证器似乎会干扰Charfield上的max_length验证

时间:2018-10-22 15:44:26

标签: python django django-forms

我正在尝试将表单字段的输入验证为仅包含12-14位数字并且可能带有前导零的数字。

但是,当我在表单字段中添加以下用于数字的正则表达式验证器时,似乎在表单上设置了max_length且验证失败时都会发生干扰。

only_numbers = RegexValidator(r'^\d{1,10}$')

mpan_lower = forms.CharField(label='some_label',
    help_text=mark_safe('Help text with link. '
                        '<a href="#">  Need more help?</a>'),
                        validators=[
                                     only_numbers,
                                 ],
                                 max_length=14,
                                 )

enter image description here

1 个答案:

答案 0 :(得分:1)

r'^\d{1,10}$'

此正则表达式允许使用1到10位数字。字符串12345678901234有14位数字,因此正则表达式验证器将不接受它。

如果您希望输入12到14位数字,请使用:

r'^\d{12,14}$'

或者,您可以使用r'^\d+$(匹配1个或多个数字),并以另一种方式验证长度(例如,为表单字段设置min_lengthmax_length)。