Соответствие регулярному выражению для небольшого десятичного числа является ошибочным в Entity Framwork - PullRequest
0 голосов
/ 17 ноября 2018

Я использую приведенное ниже регулярное выражение в одном из полей в моей модели и сохраняю модель в базе данных, используя Entity Framework.

[RegularExpression("^(0(\\.[0-9]+)?|1(\\.0)?)$", ErrorMessage = "Invalid Message")]
public float Threshold{ get; set; }

Это работает почти для всех чисел, кроме тех случаев, когда я пытаюсь дать число "0,00001", оно показывает ошибку.

Подскажите, где я не так делаю?

1 Ответ

0 голосов
/ 19 ноября 2018

Чтобы соответствовать вашим значениям, вы можете добавить другую альтернативу |[0-9]+[eE]-[0-9]+ для существующего чередования, которая соответствует показателю части:

^(0(\.[0-9]+)?|1(\.0)?|[0-9]+[eE]-[0-9]+)$

Regex demo

Ваше регулярное выражение соответствует:

  • ^ Утверждение начала строки
  • ( Захватывающая группа
    • 0 Совпадение буквально
    • (\.[0-9]+)? Дополнительная группа захвата, которая соответствует точке и 1+ цифрам
    • | или
    • 1(\.0)? Совпадение 1 и дополнительная группа захвата, которая соответствует точке и нулю
    • | или
    • [0-9]+[eE]-[0-9]+ Совпадение цифр 1+, за которыми следуют e или E, - и цифры 1+
  • ) Закрыть группу захвата
  • $ Утверждение конца строки
...