You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Pydantic进行版本号正则验证?

解决Pydantic版本号验证的正则问题

你的正则验证失败主要有三个核心问题:

  • 未转义小数点.:正则里.默认匹配任意字符,必须用\.表示实际的小数点
  • 部分规则仅匹配单个数字:比如[0-9]$或([0-9])$只能匹配1位数字,无法兼容多位数的版本段(比如10.20.30)
  • 冗余的捕获组:([0-9])+里的括号是多余的,直接用[0-9]+或\d+即可匹配一个或多个数字

正确的正则语法

针对你需要的x.y.z格式版本号(每段至少1位数字),正确的正则是:

install_component_version: constr(regex=r"^\d+\.\d+\.\d+$")

或者等价的(用[0-9]替代\d):

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

规则说明

  • ^:锁定字符串开头,避免版本号前出现多余字符
  • \d+:匹配1个或多个数字(对应主版本、次版本、修订号)
  • \.:转义后的小数点,确保只匹配实际的.符号
  • $:锁定字符串结尾,避免版本号后出现多余字符

完整示例代码

from pydantic import BaseModel, constr

class ComponentInstall(BaseModel):
    install_component_version: constr(regex=r"^\d+\.\d+\.\d+$")

# 验证通过的案例
valid_case = ComponentInstall(install_component_version="1.1.0")
valid_case2 = ComponentInstall(install_component_version="3.5.6")
valid_case3 = ComponentInstall(install_component_version="10.20.30")

# 验证失败的案例(会抛出ValidationError)
# invalid_case = ComponentInstall(install_component_version="1.1")
# invalid_case2 = ComponentInstall(install_component_version="1.a.0")
# invalid_case3 = ComponentInstall(install_component_version="1.1.")

内容的提问来源于stack exchange,提问作者Maciej

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 03:31:36