Как составить регулярное выражение (цифра от 1 до 4, нельзя повторять одинаковые цифры, можно использовать только запятые)?
Как составить регулярное выражение для проверки, что строка отвечает следующим требованиям:
- Цифры от 1-4
- Нельзя повторять одинаковые цифры
- Можно использовать только запятые
Пока получилось что-то типа этого, но оно позволяет использовать цифры повторно
^[1-4]{0,1}?( *, *[0-9]{0,1})*$
Ответы (1 шт):
Автор решения: Wiktor Stribiżew
→ Ссылка
Используйте
/^(?!.*(\d).*\1)[1-4](?:,[1-4])*$/
Если вокруг запятых разрешены пробелы:
/^(?!.*(\d).*\1)[1-4](?: *, *[1-4])*$/
/^(?!.*(\d).*\1)[1-4](?:\s*,\s*[1-4])*$/
См. пример работы регулярного выражения.
Подробности
^- начало строки(?!.*(\d).*\1)- блок предварительного просмотра вперёд, который отменяет совпадение, если сразу после текущей позиции (начала строки) есть какой-то текст (без символов перевода строки), после которого есть цифра, которая потом повторяется[1-4]- цифра от 1 до 4(?:- начало незахватывающей подмаски:\s*,\s*- запятая с необязательными пробельными символами вокруг[1-4]- цифра от 1 до 4
)*- конец незахватывающей подмаски, 0 и более повторов$- конец строки.