3

我想允许输入 Django 的所有字符使用 0-9 字符CharField

当我RegexValidator()使用regex = r'[^0-9]'. 我可以在该字段中输入0-9 之外的所有内容。实际上,它允许我输入像"word", "a4523", "!#$%#^%", and之类的字符串"5432bc",但不能 "4523"

如果我取出^and 设置regex = r'[0-9]'(见下面的代码),那么我可以输入"4523", "5432bc", and"a4523"不能 "word"输入or "!#$%#^%"

删除^似乎让我朝着正确的方向前进,但不是完整的方式。我不想使用 aPositiveSmallIntegerField因为我想将数字输入视为字符串。

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),
        ],
    )
4

1 回答 1

7

正则表达式[^0-9]意味着匹配字符串中任意位置的非数字。您可能打算以 开头^[0-9],这需要在字符串的开头有一个数字。对于一个完整的解决方案,我想你想要^[0-9]*$,它要求字符串中的所有字符都是数字。

于 2012-11-13T00:55:38.990 回答