2016-04-01 20 views
0

arap doğrulamak: Using range in regex for Arabic lettersDjango Formu burada bu cevap dayanarak Charfield

Sadece Arapça karakterleri izin vermek için bir form alanını doğrulamak istiyorum. Benim Formu geçerli:

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

Formu bana o iş yapmak için sorun oluşturuyorsa bir clean yöntemi vardır. Aslında herhangi bir karakter izin veriyor:

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") 

Ben sorun benim Regex olmalıdır biliyorum ama burada kafa karıştırıcı kavramları değilim ve o iş yapamaz.

+0

şekilde değiştirilmelidir sizinle çalışıyor olmamalı '^ [ \ u0627- \ u064a] $ '? [Wiki] 'ye (https://en.wikipedia.org/wiki/Arabic_script_in_Unicode) göre eklemek isteyebileceğiniz daha fazla karakter var. –

cevap

1

check hattı ile sorunlar bir çift, ilk Regex gibi geri alınmalıdır Orada (eğer _- eklemek isteyebilirsiniz):

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

ayrıca r'u' ile değiştirilir fark çünkü \u0628 olmaz Wi r'

Edit yorumlanabilir: benim bir önceki projenin itibaren Arapça aralık \u0621-\u06ED