2010-05-16 10 views
1

je besoin d'une expression régulière pour valider la chaîne avec un ou plusieurs de ces personnages:expression régulière avec les caractères spéciaux

  • az
  • AZ
  • '
  • àòèéùì
  • simple, l'espace blanc
  • Par exemple, ces chaînes sont valides:
D' argon calabrò 

maryòn l' Ancol 

ces chaîne ne sont pas Validé:

hello38239 

my_house 

work [tab] with me 

I tryed ceci:

re.match (r "^ [a-zA-Z « òàèéìù] + $", string)

Il semble fonctionner dans mon shell python, mais dans Django je reçois cette erreur:

SyntaxError at /home/ 

("Non-ASCII character '\\xc3' ... 

Pourquoi?


Edit:

J'ai ajouté # - - codage: utf-8- - au sommet de ma forms.py mais les cordes avec à, è, ò, Ù, é ì ne correspond jamais.

Ceci est ma méthode forms.py propre:

def clean_title(self): 

     if(re.match(r"^[a-zA-Z 'òàèéìù]+$", self.cleaned_data['title'].strip())): 
      return self.cleaned_data['title'].strip()    
     raise forms.ValidationError(_("This title is not valid.")) 

Répondre

2

Si vous utilisateur des caractères non-ASCII dans vos fichiers source python, vous devez ajouter encodage correct en haut de votre fichier source comme ceci:

# -*- coding: utf-8 -*- 
utf_string='čćžđšp' 

Defining Python Source Code Encodings

Cela semble fonctionner très bien pour moi :

>>> import re 
>>> mystring = "D' argon calabrò" 
>>> matched = re.match(r"^([a-zA-Z 'òàèéìù]+)$", mystring) 
>>> print matched.groups() 
("D' argon calabr\xc3\xb2",) 
+0

J'ai ajouté le codage # - * -: utf-8 - * - en haut de mon formulaire. Maintenant, je ne réécrit pas l'erreur ci-dessus ("Caractère non-ASCII '\\ xc3') mais si la chaîne cointain à, é, è, ò, ù ou ì ne correspond pas, pour les autres caractères correspondent. ? Merci^_^ – xRobot

+0

Je viens d'ajouter quelques autres informations ci-dessus :) – xRobot

+0

Pas sûr, il me semble que regex fonctionne bien ... –

1

Eh bien, ce sont à peu près tous les caractères non-ascii. Donc, je dirais qu'il utilise juste des caractères ascii pour l'encodage de caractères. Peut-être que vous avez besoin de le configurer pour utiliser UTF-8?

+0

Comment puis-je configurer django pour utiliser UTF-8? – xRobot

+0

Je ne saurais pas, je n'ai jamais touché Django;) Mais peut-être que cela pourrait vous aider: http://stackoverflow.com/questions/2743070/removing-non-ascii-characters-from-a-string-using- python-django – JHollanti

Questions connexes