0

我正在从这里的文档中尝试这段代码

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

关于什么问题的任何想法?

4

1 回答 1

2

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

尝试运行这个,你会得到同样的异常:

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

您需要在括号\内对每个斜线进行两次转义。[]

因此,您可以将其重写为u'^[^/\\\\]\.jpg$'原始字符串或原始字符串ur'^[^/\\]\.jpg$'

希望这可以帮助。

于 2013-11-04T16:20:43.237 回答