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

    trapwalker
    @trapwalker
    Программист, энтузиаст
    Вы можете описать регуляркой число от 1-16 так: (1[0-6])|([1-9])
    Но регекспы не предназначены для условной фильтрации по выражениям.
    Обычно они определяют только синтаксис и разделяют текст на группы, которые потом нужно преобразовывать к типам и проверять.
    Если приспичило всё-таки, используйте мой вариант описания числа 1-16, но завтра вам потребуется определять четность, а послезавтра потребуется, чтобы правая граница интервала была вдвое больше левой... Надо где-то остановиться и где именно -- решать вам.

    Вот в применении к вашему случаю:
    ^((1[0-6]|[1-9])(-(1[0-6]|[1-9]))?)(,((1[0-6]|[1-9])(-(1[0-6]|[1-9]))?))*$

    Можете даже потестировать
    Ответ написан
    2 комментария