如何在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字符”错误。还有其他使用方式吗?

最佳答案

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

关于python - Django-使用特殊表达式的RegexValidator,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37129653/

10-12 20:45