Выражение регулярного выражения для десятичного числа - PullRequest
2 голосов
/ 20 марта 2019

Может ли кто-нибудь помочь мне с регулярным выражением?В основном, я хотел бы, чтобы регулярное выражение совпадало с десятичными числами.

Допустимые типы:

12
1.3234
0.3423434
23423.12

Недопустимые типы:

0012
12.324.12
01.2332
.12
121212.

Спасибо за вашу помощь заранее!

С уважением!

Ответы [ 3 ]

2 голосов
/ 20 марта 2019

Это регулярное выражение должно выполнять вашу работу.

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

Демо

  • ^ - начало строки
  • (?: - начало группы без захвата
  • [1-9][0-9]* - соответствует номеру, не начинающемуся с нуля
  • |0 - Или позволяет сопоставить только ноль, чтобы разрешить такие числа, как 0.3423434 или 0.1
  • (?:\.[0-9]+)? - Опционально допускается десятичная часть в числе
  • $ - конец строки

Редактировать: на основании предложения Аллана использовать \d вместо [0-9]

В случае, если ваш ввод содержит только английские цифры или если вы хотите совпадать только с английскими цифрами, использование [0-9] должно быть предпочтительным по причинам, таким как повышение производительности и широкая поддержка его в механизмах регулярных выражений.

Но если ваш ввод содержит цифры из других языков, таких как хинди и т. Д., И вы хотите сопоставить любые цифры, то вместо [0-9]

следует отдавать предпочтение \d
0 голосов
/ 20 марта 2019

Вы можете использовать чередование

^(?:0\.\d*[1-9]\d*|[1-9]\d*(?:\.\d+)?)$

Regex demo

Объяснение

  • ^ Начало строки
  • (?: Группа без захвата
    • 0\. Совпадение с одним нулем, за которым следует точка
    • \d*[1-9]\d* Совпадение 0+цифры, цифры 1-9 и снова 0+ цифры t не позволяют совпадать только нулям
    • | или
    • [1-9]\d* соответствует цифре 1-9, за которой следуют цифры 0+
    • (?:\.\d+)?) Необязательная часть, соответствующая точке и 1+ цифрам
  • ) Закрыть группу без захвата
0 голосов
/ 20 марта 2019

Это было бы

^[[:digit:]]+(\.[[:digit:]]+)?$

Начало строки, затем одна или несколько цифр, затем (необязательно) точка и одна или несколько цифр, затем конец строки.

Если вы хотите обслуживать знак, добавьте [+-]? после ^.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...