python(django)正则表达式限制结果不起作用

python(django)正则表达式限制结果不起作用,python,regex,django,Python,Regex,Django,规格为除空格和大写字符外的所有字符 以下是模型上的正则表达式验证程序: path = models.CharField(max_length=150, help_text="/blog/posts/...", unique=True, validators=[ RegexValidator(regex='(^[a-z0-9-:!@#$%^&*(){}\\?<>,.;\'"`~|/]+){1}', message="Lowercase with no white

规格为除空格和大写字符外的所有字符

以下是模型上的正则表达式验证程序:

path = models.CharField(max_length=150, help_text="/blog/posts/...", unique=True, validators=[
        RegexValidator(regex='(^[a-z0-9-:!@#$%^&*(){}\\?<>,.;\'"`~|/]+){1}', message="Lowercase with no whitespace allowed")
    ])
结果:

line 27, in test_path_regex
    post.save()
AssertionError: ValidationError not raised

FAILED (failures=1)
这样做的原因似乎是,如果RegexValidator可以匹配字符串的一部分,并且{1}没有帮助,则它没有标记文本。从这个链接可以看到:

请帮忙。 谢谢

规格为除空格和大写字符外的所有字符


你可以简单地使用。在您的情况下,它将是[^\sA-Z]。这将匹配除空格和大写字母以外的所有字符

要匹配整个字符串,您需要在开始处使用^,在结束处使用$。试试regex=r'^[a-z0-9-:!@$%^&*{}\?,.;\''`~\/]+$谢谢,真不敢相信我错过了。如果你想的话,贴上答案。一旦系统允许我,我会立即批准并投票。规格是除空格和大写字符以外的所有字符。那么为什么不使用[^\sA-Z]?事实上,我在建议中使用了r-您是否打算将反斜杠与\\?@MHornbacher匹配:{1}在字符类外部使用没有任何区别,或者在字符类内部使用它会破坏字符类,因为内部的每个字符都是单独匹配的:如果没有量化,每个原子都匹配一个匹配项。
line 27, in test_path_regex
    post.save()
AssertionError: ValidationError not raised

FAILED (failures=1)