基于此答案:Using range in regex for Arabic letters
我想验证表单字段以仅允许阿拉伯字符。我的表格是:
fullname_arabic = forms.CharField(
label=_('Arabic Full Name'),
widget=widgets.TextInput(),
help_text=_('Please enter your arabic name'),
)
表单有一个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")
我知道问题必须在我的正则表达式中,但我在这里混淆概念并且无法使其发挥作用。
答案 0 :(得分:1)
该检查行存在一些问题,首先应该颠倒正则表达式(您可能想要添加_-
):
if re.findall(u'[^\u0627-\u064a\W]', fullname_arabic, flags=re.UNICODE)
另请注意r'
已替换为u'
,因为\u0628
不会被解释为r'
编辑:从我之前的项目中,阿拉伯语范围应更改为\u0621-\u06ED