Разбить его, то, что вы ищете, не так уж сложно.
Во-первых, ваш максимальный / минимальный диапазон от -4 до 4. Учитывая десятичный раздел, вы можете иметь следующее: ^[+-]?4(,0{1,2})?$
.Таким образом, здесь мы ожидаем +
или -
(необязательно), число 4, за которым, возможно, следуют запятая и один или два 0.
В вашем случае нам теперь нужно сопоставитьсередина вашего диапазона, то есть от -3,99 до 3,99.Это может быть достигнуто следующим образом: ^[+-]?[0-3](,\d{1,2})?$
.В этом случае мы также ожидаем +
или -
(опционально).Затем мы ожидаем совпадения цифры от 0 до 3, за которой необязательно следуют запятая и 1 или 2 цифры.
Комбинируя их, мы получим что-то вроде этого: ^[+-]?((4(,0{1,2})?)|([0-3](,\d{1,2})?))$
.Пример доступен здесь .
РЕДАКТИРОВАТЬ: Согласно комментариям, вам необходимо экранировать косую черту перед \d
, потому что компилятор C # попытается инайдите особое значение для \d
, точно так же, как когда вы делаете \n
или \t
.Самый простой способ - использовать символ @
, так что компилятор C # угрожает строке как литералу: Regex regex = new Regex(@"^[+-]?((4(,0{1,2})?)|([0-3](,\d{1,2})?))$");
.