Валидация pydantic. Проверить что строка не содержит определённых символов

Мне надо убедиться что строка не содержит символов кириллицы. Делаю проверку подобным образом:

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

Но при передаче в поле content_en строки содержащие кириллицу не вызывается ошибка.
Как правильно сделать проверку?
Python 3.8
Pydantic 2.5


Ответы (2 шт):

Автор решения: teran

Вам, вероятно, нужно использовать выражение вида

r"^[^а-яё]+$"i

https://regex101.com/r/UK7yT2/1
то есть обозначить начало и конец строки, и определить, что все символы внутри - не кириллица. Флаг i - регистронезависимость.
Отдельно следует заметить, что буква ё не входит в диапазон а-я.

В приведенном же вами коде выражение проверяет, что в искомой строке есть хотя бы один символ отличный от кириллицы.

→ Ссылка
Автор решения: Duncan

Решил вопрос вот так:

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

r"^[^а-яА-ЯёЁ]+$" тоже работает.

→ Ссылка