我只允许字符0-9用于输入DjangoCharField
的所有字符。在
当我将RegexValidator()
与regex = r'[^0-9]'
一起使用时。我可以在字段中输入所有但0-9。实际上,它允许我输入一个字符串,比如"word"
,"a4523"
,"!#$%#^%"
,和"5432bc"
,但是不是"4523"
。在
如果我去掉^
并设置regex = r'[0-9]'
(见下面的代码),那么我可以输入"4523"
,"5432bc"
,和{"word"
或{
删除^
似乎让我找到了正确的方向,但并不是全部。我不想使用PositiveSmallIntegerField
,因为我想将数字输入视为字符串。在
class Number(models.Model):
number = models.CharField(
max_length=14,
validators=[
RegexValidator(
r'[0-9]',
'Only 0-9 are allowed.',
'Invalid Number'
),
MinLengthValidator(4),
MaxLengthValidator(14),
],
)
正则表达式
[^0-9]
表示匹配字符串中任何位置的非数字。您可能想以^[0-9]
开头,这需要在字符串的开头有一个数字。对于完整的解决方案,我认为您需要^[0-9]*$
,它要求字符串中的所有字符都是数字。在相关问题 更多 >
编程相关推荐