Django Form验证阿拉伯语CharField



基于这里的答案:在正则表达式中使用阿拉伯字母的范围

我想验证"表单"字段,使其只允许使用阿拉伯字符。我的表格是:

fullname_arabic = forms.CharField(
    label=_('Arabic Full Name'),
    widget=widgets.TextInput(),
    help_text=_('Please enter your arabic name'),
)

Form有一个clean方法,这给我带来了使它工作的问题。实际上它允许任何字符:

def clean_fullname_arabic(self):
    fullname_arabic = self.cleaned_data['fullname_arabic']
    if not re.match(r'[u0627-u064a]+$', fullname_arabic):
        raise forms.ValidationError("Only Arabic chars")

我知道问题一定出在我的Regex上,但我混淆了这里的概念,无法使其工作。

该检查行有几个问题,首先Regex应该反转为(您可能想要添加_-):

if re.findall(u'[^u0627-u064aW]', fullname_arabic, flags=re.UNICODE)

还要注意,r'u'取代,因为u0628不会被r' 解释

编辑:根据我以前的项目,阿拉伯语范围应更改为u0621-u06ED

最新更新