基于这里的答案:在正则表达式中使用阿拉伯字母的范围
我想验证"表单"字段,使其只允许使用阿拉伯字符。我的表格是:
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