Django - 使用特殊表达式的RegexValidator

时间:2016-05-10 05:03:58

标签: python regex django validation django-forms

如何在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字符”错误。有没有其他方法可以使用它?

1 个答案:

答案 0 :(得分:2)

您可以使用\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')
    ...