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

发布于 2022-09-03 00:42:23 字数 438 浏览 15 评论 0

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

clipboard.png

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

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

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

你在我安 2022-09-10 00:42:23

没用过这个库 不过按照自己对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

那片花海 2022-09-10 00:42:23

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

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

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

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

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文