2010-05-16 211 views
1

我需要一个正则表达式验证字符串与一个或多个字符:正则表达式的特殊字符

  • AZ
  • AZ
  • àòèéùì
  • 简单的白色空间

例如这些字符串是valide:

D' argon calabrò 

maryòn l' Ancol 

这些字符串是NOT的Valide:

hello38239 

my_house 

work [tab] with me 

我tryed此:

re.match(R “^ [A-ZA-Z“òàèéìù] + $”,字符串)

似乎在我的Python外壳,但在Django工作,我得到这个错误:

SyntaxError at /home/ 

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

为什么?


编辑:

我已经加入# - - 编码:UTF-8 - - 在我forms.py顶部但有琴弦,E,O,U,E或“永远不匹配。

这是我forms.py清洁方法:

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

回答

2

如果你的Python源文件,你的用户的非ASCII字符,你应该添加适当的编码到源文件的这样的顶部:

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

Defining Python Source Code Encodings

这似乎为我工作得很好:

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

我在forms.py的顶部添加了# - * - coding:utf-8 - * - 。 现在我不回避上面的错误(“非ASCII字符'\\ xc3'),但如果字符串cointainà,é,è,ò,ù或ì然后不匹配。 ?谢谢^ _^ – xRobot 2010-05-16 13:03:54

+0

我刚刚在上面加了一些其他的信息:) – xRobot 2010-05-16 13:09:03

+0

不知道,在我看来,正则表达式工作正常... – 2010-05-16 16:03:39

1

哦,那是几乎所有非ASCII字符。所以我认为它只是使用ascii来进行字符编码。也许你需要将它配置为使用UTF-8?

+0

如何配置django使用UTF-8? – xRobot 2010-05-16 09:52:37

+0

我不知道,我从来没有碰过Django;)但也许这可能会帮助你:http://stackoverflow.com/questions/2743070/removing-non-ascii-characters-from-a-string-using- python-django – JHollanti 2010-05-16 09:58:50