Регулярное выражение, чтобы проверить, находится ли десятичное число между двумя числами независимо от количества цифр после десятичной точки - PullRequest
0 голосов
/ 14 января 2020

Можете ли вы помочь мне с написанием регулярного выражения (я буду использовать это в Pattern.compile в Java)?

Мое требование:

Given a decimal, should check if the given decimal is between two numbers,

Example: Given Number 1 : 0, Number 2: 50
a) 0 - true
b) 51 - false
c) 50 - true
d) 10.25 - true
e) 10.2345 - true

Я должен проверять независимо от количество цифр после десятичной точки.

Ответы [ 3 ]

0 голосов
/ 14 января 2020

Так что я не уверен на 100%, что правильно понимаю вопрос, поэтому я не могу быть уверен на 100%, что он будет работать во всех случаях, но вот что у меня есть.

([0-9]{2}\.[0-9]{2})|([0-9]*0\b)

a) 0 - верно

b) 51 - неверно

c) 50 - верно

d) 10,25 - верно

e) 10.2345 - true

Если "." находится между 2 числами или оканчивается на 0.

Вот пример: https://regex101.com/r/295QWt/1

Так что мой другой ответ, если число находится между 2 различными числами. На самом деле в этом случае я не думаю, что регулярное выражение является настолько полезным. В зависимости от языка использование регулярных выражений может быть даже медленнее.

if(value > min && value < max){return true;}
0 голосов
/ 14 января 2020

Используйте это регулярное выражение:

^(?:[0-4]?\d(?:\.\d+)?|50(?:\.0+)?)$

Демонстрация и объяснение

0 голосов
/ 14 января 2020

Будет сложно внедрить решение generi c, поэтому я оставлю здесь решение для вашего примера и подумаю о его решении c.

Вот ваше регулярное выражение : (([0-4]{1}[0-9]{1})|((50){1}))(\.[0-9]+)*

Чтобы сделать его обобщенным c, вам просто нужно изменить реализацию первой части на числа, которые вы хотите использовать, вы можете сделать это, используя al oop для объединения этих групп (это первая часть: ([0-4]{1}[0-9]{1})|((50){1})).

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