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

使用Pydantic验证字符串不含西里尔字符失效,如何正确实现?

问题:验证字符串不含西里尔字符的Pydantic代码未生效

我需要确保字符串中不包含西里尔字符,编写了如下Pydantic验证代码:

from pydantic import BaseModel, Field

class MyModel(BaseModel):
    content_en: str = Field(pattern=r"[^а-яА-Я]")


data = MyModel(content_en="Has wrong content 'йцукен'")
print(data)
>>> content_en="Has wrong content 'йцукен'"

但当我传入包含西里尔字母的字符串到content_en字段时,并未触发验证错误。预期应抛出如下错误:

pydantic_core._pydantic_core.ValidationError: 1 validation error for MyModel
...

请问该如何正确实现验证?环境为Python 3.8、Pydantic 2.5。


解决方案(感谢@chepner)

class MyModel(BaseModel):
    content_en: str = Field(pattern=r"^[^а-яА-ЯёЁ]*$")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 18:44:55