Совпадение с плавающей точкой ТОЛЬКО с Regex - PullRequest
0 голосов
/ 23 мая 2019

У меня есть рабочее регулярное выражение, которое совпадает с целым числом с плавающей точкой, но мне нужно одно, чтобы оно совпадало только с плавающей точкой (количество десятичных знаков может быть любым).

Это то, что у меня есть

 Regex regex = new Regex(@"^-?(?=.*[1-9])\d+(\.\d+)?$", RegexOptions.IgnoreCase);

Как мне изменить его, чтобы он совпадал только с плавающей точкой?Спасибо!

Ответы [ 2 ]

1 голос
/ 23 мая 2019

Регулярное выражение, которое вы ищете (я разделил его на группы для объяснения):

Regex regex = new Regex(@"^(\+?)([0-9]*)(\.)([0-9]+)$");

Пояснение:

  • Группа 1 - необязательный знак плюс в начале.

  • Группа 2 - необязательные цифры перед точкой (почему необязательно? Потому что, например, .345 является действительным числом - и обозначает 0.345).

  • Группа 3 - десятичная точка.

  • Группа 4 - цифры после точки. Один комментарий: это регулярное выражение будет принимать такие числа, как 12345.0, хотя на самом деле это не десятичное число. Я не вижу, как решить эту проблему только с помощью регулярных выражений (без кода).

0 голосов
/ 23 мая 2019

Я думаю, что вам нужно это

Regex regex = new> Regex(@"^([-+]?)(([0]{1})|([1-9]+([0-9]*)))(\.)([0-9]+)$");
  • Группа 1: Необязательно "-" петь в начале.
  • Группа 2 - 5: Номер начинается с 0 ИЛИначать с другого числа (1-9) один или несколько.В этом случае совпадение невозможно (пример: 001.55 - это не число с плавающей запятой).
  • Группа 6 - Включить "."
  • Группа 7 - Включить один или несколько (0-9)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...