【发布时间】:2014-03-24 12:27:36
【问题描述】:
我有一个 IntegerField,我希望输入只接受 11 位数字/数字的值。
我试图在该字段上制作一个正则表达式验证器,但我的问题是当我尝试使用该字段制作一个模型表单时。如果值是 10 位或更少,我只会收到验证错误,但如果我尝试 12 位及以上的值,我不会收到任何验证错误。
这是我的模型字段:
number = models.IntegerField(max_length=11, validators=[RegexValidator(r'\d{11,11}','Number must be 11 digits','Invalid number')])
如果值超过 11 位,我怎样才能得到验证错误?
【问题讨论】:
-
你只想要数字或字符到??/
-
M42 提供的用户正则表达式非常适合您
-
在您的编辑中,您似乎错过了 M42 答案中的起始锚点,即第一个引号后的小
^。使用您当前的正则表达式,即使bladieblaanythinghere12345678901也会被接受,因为它只是查看字符串是否包含 11 位数字,然后是字符串的结尾。使用起始锚点^,它将查找字符串的开头,然后是 11 位数字,然后是字符串的结尾 - 不允许在正则表达式的数字部分之前/之后的任何其他字符。 -
@knbk:你是对的!我错过了
^。现在它起作用了!我删除了我的编辑,因为它没有为问题添加任何内容。
标签: python regex django django-models django-validation