Я использую нижеприведенное регулярное выражение в одном из полей моей модели и сохраняю модель в базе данных с помощью Entity Framework.
[RegularExpression("^(0(\\.[0-9]+)?|1(\\.0)?)$", ErrorMessage = "Invalid Message")]
public float Threshold{ get; set; }
Он работает почти для всех чисел, за исключением случаев, когда я пытаюсь указать число «0,00001», оно показывает ошибку.
Можете ли вы подсказать, где я делаю не так?
да, это работает в большинстве случаев, кроме 0.00001. Я действительно сбегаю из. что-то я пропустил в своем вопросе, который я исправил сейчас. Я получаю сообщения об ошибках. Существует правило максимальной длины строки, но это со стороны пользовательского интерфейса. Также в консоли, когда я пытаюсь посмотреть значение порога, он показывает в научной нотации, такой как 1e-5, для других чисел, которые он показывает десятичные. Я не уверен, что это связано с выпуск или нет.
Попробуйте добавить другую альтернативу для экспоненты, например, ^(0(\.[0-9]+)?|1(\.0)?|[0-9]+[eE]-[0-9]+)$
Вам не нужно регулярное выражение для проверки чисел с плавающей запятой, вы можете написать для этого собственный метод проверки.
Не знаю, поможет ли это, но, может быть, вы справитесь: ^[0-9]+(?:.[0-9]*)$
Thnaks @Thefourthbird за решение. Теперь он работает для меня
@varunkumar Добро пожаловать. Я добавил ответ. Если это помогло решить вашу проблему, не стесняйтесь принять его до нажав ✓ слева от ответа.





Чтобы соответствовать вашим значениям, вы можете добавить другой альтернативный |[0-9]+[eE]-[0-9]+ для существующего чередования, который соответствует части экспонента:
^(0(\.[0-9]+)?|1(\.0)?|[0-9]+[eE]-[0-9]+)$
Ваше регулярное выражение соответствует:
^ Подтвердить начало строки( Группа захвата
0 Матч буквально(\.[0-9]+)? Дополнительная группа захвата, которая соответствует точке и 1+ цифрам| Или1(\.0)? Match 1 и необязательная группа захвата, которая соответствует точке и нулю| Или[0-9]+[eE]-[0-9]+ Соответствует 1+ цифрам, за которыми следуют e или E, - и 1+ цифр) Группа закрытого захвата$ Утвердить конец строки
Это работает для
1.0и0.1? Я думаю, что это соответствует Вам также нужно избегать точки, чтобы соответствовать ей буквально. Вы получаете сообщение об ошибке или другую ошибку? Есть ли правила, связанные с длиной строки?