@JuniorNoobie
Сижу в поддержке, пишу мелкие проекты

Как проверить строку через регулярные выражению?

Доброго времени суток!
Никак не могу понять как написать регулярное выражение для строки, чтобы:
1) Пустая строка была валидной;
2) Строка не содержала знака "." (точка) и цифр, а только литеры и пробел;
3) Строка содержала не более двух словосочетаний (ФИО), разделенных запятой или точкой с запятой.

Т.е. "", "Иванов Иван Иванович", "Иванов Иван, Петров Петр" и "Иванов Иван; Петров Петр" - это валидные строки, а "Иванов И. А.", "Иванов Иван, Петров Петр, Сидоров Сидор" - нет.

Написал такое выражение (как смог, в регулярках я очень не силен), но оно не работает.
^$|[a-zA-z\s]*[^.]$|[a-zA-z\s]*[^.][;,][a-zA-z\s]*[^.]


Подскажите пожалуйста как писать регулярные выражения, чтобы они проверяли строку полностью, т.е. строка либо соответствует РВ, либо нет.

П.С. "a-zA-Z" я заменю, в будущем, на русский язык, пока тестирую с английскими словосочетаниями.
  • Вопрос задан
  • 182 просмотра
Решения вопроса 1
lidacriss
@lidacriss
wtf
Попробуйте такую регулярку
^$|^[а-яёА-ЯЁ\s]+$|^[а-яёА-ЯЁ\s]+(?=[,;])[,;][а-яёА-ЯЁ\s]+$

https://regex101.com/r/zBR9Ki/1
https://regex101.com/r/zBR9Ki/2
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы