Мне интересно, можно ли добавить больше проверок: [Предыдущий ответ на вопрос]( Пытаюсь построить регулярное выражение для проверки шаблона)
Вышеупомянутая проблема блестяще решена с помощью этого regex Брайаном Роджерсом:
/^([1-9]|[12][0-9]|3[01])(-([1-9]|[12][0-9]|3[01]))?(,([1-9]|[12][0-9]|3[01])(-([1-9]|[12][0-9]|3[01]))?)*$/
[Для справки, размещаю старую проблему снова]
Например, 2-2,1
ИЛИ 2,2-1
является правильным, а 1-1-1-1
- нет.
Например:
- 1-5,5,15-29
- 1,28,1-31,15
- 15,25,3
- 1-24,5-6,2-9
Может ли это пойти дальше и добавить другие валидации?
1) Числа должны быть в порядке возрастания
Например:
- 1,2-3 - Действительны
- 4-6,23 - действительны
- 23,4-5 - недопустимо
2) Числа не должны повторяться
Например:
a) 2,2,2 - Недействительно
b) 2,3-6,3 - недействительно
c) 2,5,7-20 - допустимо
3) Если возможно
Число не должно повторяться, если ранее было определено в диапазоне
Например:
a) 2,3-6, 4 - Недействительно, так как 4 уже является числом между 3 и 6
b) 12-16, 14-18 - Неверно, так как 14, 15 и 16 уже определены в 12-16
c) 9-13, 15, 17-19 - Действительны