Вы также можете сделать это
return Decimal.Parse(incomingValue, new CultureInfo("en-US"));
В en-US '.'это разделитель запятыми.Таким образом, он будет правильно анализировать текст.
Если в культуре указано, что "de-DE" 3 будет ожидаемым результатом преобразования, поскольку "," - это разделитель запятых.
ВашОднако регулярное выражение regex всегда даст вам 3, потому что оно просто соответствует [0-9]+
регулярным выражениям, не заботясь о настройках вашей культуры.Если вы хотите, чтобы регулярное выражение соответствовало вашему номеру, вы должны использовать что-то вроде
Regex regex = new Regex(@"\d+(,\d+)*");
Это будет соответствовать «123», а также «123,123», но не «123» или «123.»(в случае ведьмы он будет соответствовать части 123).