У меня есть следующий вопрос:Regex выражение для согласования диапазонов
- Строка должна быть подтверждена с помощью регулярных выражений-выражения.
- Строка содержит диапазоны или одиночные значения, разделенные точкой с запятой, например.
100-200;10;2300-3400;34;
- Максимальное значение каждого номера:
99999
. - В строке нет букв.
То, что я до сих пор:
^([0-9]{1,5}[-][0-9]{1,5}[;])? ^([0-9]{1,5}[;])? ([0-9]{1,5}[-][0-9]{1,5}[;])?([0-9]{1,5}[;])? ([0-9]{1,5}[-][0-9]{1,5}[;])*$? ([0-9]{1,5}[;])*$?
Таким образом, мое регулярное выражение состоит из трех необязательных групповых типов:
- Начало:
^([0-9]{1,5}[-][0-9]{1,5}[;])? ^([0-9]{1,5}[;])?
- Средний:
([0-9]{1,5}[-][0-9]{1,5}[;])?([0-9]{1,5}[;])?
- End :
([0-9]{1,5}[-][0-9]{1,5}[;])*$? ([0-9]{1,5}[;])*$?
Это регулярное выражение не решает мою проблему, хотя, например, буквы внутри входного выражения часто возвращают true, но должны возвращать false. Любая идея о том, как это решить?
Это упрощенная версия регулярных выражений следующий комментарий по РБ:
- Начало:
^(\d{1,5}\-\d{1,5};)? ^(\d{1,5};)?
- Средний:
(\d{1,5}\-\d{1,5};)? (\d{1,5};)?
- Конец:
(\d{1,5}\-\d{1,5};)*$? (\d{1,5};)*$?
как насчет отрицательных диапазонов '-10-10' и нисходящих диапазонов' 200-100'? – fubo
Отрицательные диапазоны не допускаются, нисходящие - – Chris
Почему бы просто не использовать строку, разделенную первым разделом точкой с запятой, а затем тире. Наконец, используйте int.TryParse. – jdweng