wtforms.validators中的Regexp验证函数的flags参数有什么作用?

MrChi
  • 489

wtforms的文档中是这样解释的:

clipboard.png

表示没有看懂,请各位大神指点。主要疑惑在:

  1. for example re.IGNORECASE是什么意思,难道这个参数还等代表re模块中的其它常量?

  2. Ignored if regex is not a string.我觉得regex这个参数只能是string类型吧?还会有其它的情况嘛?

回复
阅读 4.9k
2 个回答
✓ 已被采纳

没用过这个库 不过按照自己对re的理解来回答, 这应该是封装了一些正则的功能吧

1.参考 https://docs.python.org/2/library/re.html#re.compile
flags:查看具体的flag常量

re.DEBUG
re.I
re.IGNORECASE
re.L
re.LOCALE
re.M
re.MULTILINE
re.S
re.DOTALL
re.U
re.UNICODE
re.X
re.VERBOSE

2.他的意思是 regex传入的值类型不是string 忽略掉


update:

库下载下来看源码一目了然了:

site-packages/wtforms/validators.py 264行

def __init__(self, regex, flags=0, message=None):
    if isinstance(regex, string_types):
        regex = re.compile(regex, flags)
    self.regex = regex
    self.message = message

先判断传入的regx是不是string,然后compile

不知道为什么不能修改问题,那么再加一个自己的回答好了,再综合一下采纳的答案。

  1. flags参数在re模块的文档中是这样描述的:

Values can be any of the following variables, combined using bitwise OR (the | operator).

这些常量可以使用位或运算符来同时使用,默认值为0,表示不使用任何标志常量,for example也就说的通了。

  1. 正如源码所示,如果regex不是字符串,那么也就没有编译的步骤了,那么这些参数自然会被忽略。

宣传栏