Regex для проверки валидации в Django - PullRequest
1 голос
/ 30 мая 2020

Я пытаюсь ввести код для следующей проверки в Django: «Заглавные буквы разрешены только в первом слове или только в том случае, если все буквы в слове - заглавные». Я делал это до сих пор, но это не работает. Кто-нибудь может мне помочь?

Например:

This is The GOOD day - acceptable
ThIS is THE gOOD day - not acceptable

Мой код:

RegexValidator(
        regex='(^[A-Z][\sa-z0-9]+$)|(^([A-Z]\w*\s*)+$)',
        message='Capital Letters are allowed only as first word letter or only if all letters in word are uppercase',
        code='invalid_capitalisation'
)

1 Ответ

1 голос
/ 30 мая 2020

Вы можете использовать

^(?!.*[a-z][A-Z])(?!.*[A-Z][a-z]+[A-Z]).*

См. демонстрацию регулярных выражений

Подробности

  • ^ - начало строки
  • (?!.*[a-z][A-Z]) - строчная буква, за которой следует прописная, в любом месте строки не допускается
  • (?!.*[A-Z][a-z]+[A-Z]) - заглавная буква не сопровождается одной или несколькими строчными буквами, за которыми следует с прописными буквами в любом месте строки допускается
  • .* - любые 0 или более символов, кроме символов разрыва строки, как можно больше
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...