2016-04-01 3 views
0

アラビア検証:Using range in regex for Arabic lettersDjangoのフォームは、ここで、この回答に基づいてCharFieldです

は、私が唯一のアラビア文字を許可するようにフォームフィールドを検証します。私のフォームは、次のとおりです。

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

に変更する必要がありますが、 '^にしようとすべきではありません:r'

編集のwiを解釈します\ u0627- \ u064a] $ '? [Wiki](https://en.wikipedia.org/wiki/Arabic_script_in_Unicode)には、追加したい文字があります。 –

答えて

1

あり最初の正規表現は、(あなたが_-を追加したい場合があります)のように逆になることをチェックラインの問題のカップル、:\u0628はないので

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

も、r'u'に置き換えられて気づきます[私の以前のプロジェクトからは、アラビア語範囲は\u0621-\u06ED

関連する問題