使用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
相关产品推荐
相关产品推荐

