#regex
#регулярное выражение
Вопрос:
Я ищу регулярное выражение, соответствующее строке, подобной этой: 1,2,4-6,9,11-13,20
.
Ограничения:
- Разрешены только цифры, запятая и дефис
- пробелы не допускаются
Комментарии:
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. Но это определенно стоит того, чтобы проголосовать за.