2013-11-04 41 views
0

意外結束,我從這裏docs上傳與wtforms - 正則表達式

class Form(Form): 
    image = FileField(u'Image File', validators=[Regexp(u'^[^/\\]\.jpg$')]) 

    def validate_image(form, field): 
     if field.data: 
      field.data = re.sub(r'[^a-z0-9_.-]', '_', field.data) 

這裏嘗試這種代碼是錯誤:

Traceback (most recent call last): 
    File "tornadoexample2-1.py", line 111, in <module> 
    class Form(Form): 
    File "tornadoexample2-1.py", line 119, in Form 
    image = FileField(u'Image File', validators=[Regexp(u'^[^/\\]\.jpg$')]) 
    File "/usr/local/lib/python2.7/dist-packages/wtforms/validators.py", line 256, in __init__ 
    regex = re.compile(regex, flags) 
    File "/usr/lib/python2.7/re.py", line 190, in compile 
    return _compile(pattern, flags) 
    File "/usr/lib/python2.7/re.py", line 242, in _compile 
    raise error, v # invalid expression 
sre_constants.error: unexpected end of regular expression 

什麼問題的任何想法?

回答

2

Regexp(u'^[^/\\]\.jpg$')的正則表達式不太好。

嘗試運行此,你會得到相同的異常:

import re 
re.compile(u'^[^/\\]\.jpg$') 

您需要兩次逃脫[]括號內各\斜線。

因此,您可以將其重寫爲u'^[^/\\\\]\.jpg$'或作爲原始字符串ur'^[^/\\]\.jpg$'

希望這會有所幫助。