Как написать это с помощью регулярного выражения?

#regex

#регулярное выражение

Вопрос:

Я ищу регулярное выражение, соответствующее строке, подобной этой: 1,2,4-6,9,11-13,20 .

Ограничения:

  1. Разрешены только цифры, запятая и дефис
  2. пробелы не допускаются

Комментарии:

1. Требуется некоторое разъяснение (наряду, возможно, с указанием того, что вы пробовали сами и где именно вы застряли. Проблема может заключаться в том, что вы недостаточно определили, в чем заключается реальная проблема. Если вы это сделаете, решение будет тривиальным). Например, было бы -,1-,,2-2-2-2,111,-11-,-,-,34, допустимо? Согласно вашим правилам до сих пор, это было бы. Является 1.5 числом? Кроме того, вы хотите найти подобную строку в более длинном тексте или вы хотите проверить всю строку в соответствии с вашими правилами?

2. И, как отметил @FailedDev в своем ответе, вам нужно сообщить нам, какой вариант регулярного выражения вы используете.

Ответ №1:

Ваш вопрос довольно расплывчатый. Я бы посоветовал улучшить его или прочитать руководство по регулярным выражениям.

Исходя из вашего ограничения, ваше регулярное выражение /^[-d,]*$/ но я совершенно уверен, что это не то, что вы хотите.

Вы должны предоставить примеры ввода, вывода, разновидности регулярных выражений, которые вы будете использовать, и последнее, но не менее важное, ваши попытки решить проблему.

Ответ №2:

Я предполагаю, что вы хотите сопоставить разделенные запятыми списки положительных целых чисел или диапазоны положительных целых чисел. d соответствует целым числам, которые вы бы использовали для разрешения диапазонов d (-d )? .

Итак, регулярное выражение

 d (-d )?(,d (-d )?)*
  

сошло бы.

Комментарии:

1. Это тоже было бы моим предположением. Хотя было бы приятно услышать это от @ggk517. Но это определенно стоит того, чтобы проголосовать за.