我正在尝试使用 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)
谁能帮我看看正则表达式语法应该是什么样子?
您遇到的错误是由于类型注释造成的。
根据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 满意。
| 归档时间: |
|
| 查看次数: |
11736 次 |
| 最近记录: |