我希望在Django的
CharField
中,只允许输入0-9的字符。当我使用RegexValidator()
函数并设置regex=r'[^0-9]'
时,该字段可以输入除0-9以外的任何字符。例如:"word"
、"a4523"
、"!#$%#^%"
和"5432bc"
,但是"4523"
不能输入。如果我删除^
并将regex=r'[0-9]'
(见下方代码),则可以输入"4523"
、"5432bc"
和"a4523"
,但是不能输入"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 或多个)与+
(1 或多个)。另外:^\d+$
。 - Hamishr'^\+?[\d]*'
。 - Matthias