如何使用 Pydantic 正则表达式验证?

Mac*_*iej 6 python pydantic

我正在尝试使用 Pydantic 编写一个验证器来处理以下字符串(示例): 1.1.0, 3.5.6, 1.1.2等。

我失败了以下语法:

install_component_version: constr(regex=r"^[0-9]+.[0-9]+.[0-9]$")
install_component_version: constr(regex=r"^([0-9])+.([0-9])+.([0-9])$")
install_component_version: constr(regex=r"^([0-9])\.([0-9])\.([0-9])$")
Run Code Online (Sandbox Code Playgroud)

谁能帮我看看正则表达式语法应该是什么样子?

pyt*_*ser 4

您遇到的错误是由于类型注释造成的。

根据https://github.com/pydantic/pydantic/issues/156,这尚未修复,您可以尝试使用pydantic.Field,然后像这样regex传递参数

install_component_version: str = Field(regex=r"^[0-9]+.[0-9]+.[0-9]$")

这样您就可以获得正则表达式验证和类型检查。

PS:这不是 100% 的替代方案constr,但如果您想要的只是正则表达式验证,则上述替代方案可以工作并使 mypy 满意。