Регулярное выражение с уникальными цифрами - PullRequest
0 голосов
/ 29 ноября 2018

Я пытаюсь создать регулярное выражение с уникальными цифрами, разделенными запятой, максимум с 5 цифрами, и числа допускаются от 1 до 10.например

1,2,3,4,5 - действительный

1,2,2,4,5 - недействительный (потому чтоэто позволяет определять повторяющиеся цифры)

, но я хочу регулярное выражение, в которое мы можем ввести только уникальный номер.Ниже я упоминаю свое регулярное выражение, которое разрешает цифры с разделенной запятой и разрешает 5 цифр между 1-10.

^ ([1-9] | 10) (?:, ([1-9]| 10)) {0,4} $

Пожалуйста, помогите, как определить это регулярное выражение, которое допускает только уникальные цифры

1 Ответ

0 голосов
/ 29 ноября 2018

Вы можете использовать

^(?!.*\b(\d+)\b.*\b\1\b)(?:[1-9]|10)(?:,(?:[1-9]|10)){0,4}$

См. онлайн-демонстрацию регулярных выражений .

Отрицательный запрос (?!.*\b(\d+)\b.*\b\1\b) проваливает любое совпадение, если есть повторяющиеся куски идентичных цифр, какцелые слова (заключенные в границы слов).

См. Демонстрацию Java :

List<String> strs = Arrays.asList("1,2,3,4,5", "1,2,2,4,5");
String rx = "(?!.*\\b(\\d+)\\b.*\\b\\1\\b)(?:[1-9]|10)(?:,(?:[1-9]|10)){0,4}";
for (String str : strs)
    System.out.println(str + ": " + str.matches(rx));

Вывод:

1,2,3,4,5: true
1,2,2,4,5: false

Обратите внимание, что ^ и $ в начале и конце шаблона в Java-коде опущены, поскольку .matches требует полного совпадения строки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...