【问题标题】:Django - RegexValidator using special expressionsDjango - 使用特殊表达式的 RegexValidator
【发布时间】:2016-09-04 21:47:18
【问题描述】:

如何实现RegexValidator中的特殊表达式?

forms.py:

class MyRegistrationForm(forms.ModelForm):
    alphanumeric = RegexValidator('^[A-Za-z]+$', 'Only alphabetic')
    first_name = forms.CharField(max_length = 20, validators=[alphanumeric])
    last_name = forms.CharField(max_length = 20, validators=[alphanumeric])

我也想使用:áàäéèëíìïóòöúùüñÁÀÄÉÈËÍÌÏÓÒÖÚÙÜÑ,但我收到 “非 ASCII 字符” 错误。有没有其他的使用方式?

【问题讨论】:

    标签: python regex django validation django-forms


    【解决方案1】:

    您可以使用\w 说明符,但由于RegexValidator 不启用re.UNICODE 标志,您可能需要这样的东西:

    import re
    class MyRegistrationForm(forms.ModelForm):
        re_alphanumeric = re.compile('^\w+$', re.UNICODE)
        alphanumeric = RegexValidator(re_alphanumeric, 'Only alphabetic')
        ...
    

    更新:如果要排除数字字符,请使用

    import re
    class MyRegistrationForm(forms.ModelForm):
        re_alpha = re.compile('[^\W\d_]+$', re.UNICODE)
        alpha = RegexValidator(re_alpha, 'Only alphabetic')
        ...
    

    【讨论】:

    • 现在 django 在正则表达式验证器中默认有 unicode
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多