Skip to main content
 首页 » 编程设计

python之Django之使用特殊表达式的 RegexValidator

2024年10月24日33小虾米

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

表单.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') 
    ...