Задать вопрос
@vitalykostak

Как исполнить функцию условных операторов в регулярном выражении?

#^(1|2|3)/sometext/sometext/(1a|2a|3a)$#
Попробую объяснить, в первой подмаске будет находиться один из трех вариантов, как сделать так, чтобы во второй подмаске мог быть один и только один соответствующий первой подмаске вариант? Например:
1/sometext/sometext/1a - эта строка пройдет валидацию
2/sometext/sometext/2a - эта строка пройдет валидацию
3/sometext/sometext/3a - эта строка пройдет валидацию
3/sometext/sometext/2a - эта строка не пройдет валидацию
2/sometext/sometext/1a - эта строка не пройдет валидацию
Я знаю что конкретно этот пример можно решить и так:
#^((1/sometext/sometext/1a)|(2/sometext/sometext/2a)|(3/sometext/sometext/3a))$#
Но в моей реальной задаче если так определаять каждый вариант то регулярка будет такая длинная, что просто трындец. Короч кто знает подскажите. Благодарю.
  • Вопрос задан
  • 193 просмотра
Подписаться 1 Средний Комментировать
Ответ пользователя x_dmitry_x К ответам на вопрос (4)
@x_dmitry_x
^(1|2|3)/sometext/sometext/\1a$
Ответ написан
Комментировать