2010-05-16 259 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