RegexValidator在CharField中不允许0-9

nu *_*est 3 python regex django

我想允许字符0-9表示输入Django的所有字符CharField.

当我使用RegexValidator()regex = r'[^0-9]'.我可以进入一切,但在该领域0-9.事实上,它可以让我输入一个字符串像"word","a4523","!#$%#^%",和"5432bc",但不会 "4523".

如果我取出^并集regex = r'[0-9]'(见下面的代码),那么我可以进入"4523","5432bc""a4523"不是 "word""!#$%#^%".

移除^似乎让我朝着正确的方向前进,但不是完整的方向.我不想使用a,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),
        ],
    )
Run Code Online (Sandbox Code Playgroud)

Jam*_*arp 7

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