поиск значений без повторов с помощью регулярных выражений
помогите написать регулярное выражение, которое проверит значение: в переменной может быть указан один или несколько кодов без повторов через запятую, без пробелов, из следующих кодов:
1,2,3,4,5,8,33
^(1|2|3|4|5|8|33)$
Ответы (1 шт):
Автор решения: Wiktor Stribiżew
→ Ссылка
Используйте
^(?!.*\b(\d+)\b.*\b\1\b)(?:[1-58]|33)(?:,(?:[1-58]|33))*$
Подробности
^- начало строки(?!.*\b(\d+)\b.*\b\1\b)- разрешены только уникальные целые числа(?:[1-58]|33)- число от 1 до 5, 8 или 33(?:,(?:[1-58]|33))*- ноль и более повторов последовательности из запятой и числа от 1 до 5, 8 или 33$- конец строки.