регулярное выражение для числа с плавающей запятой, меньшего или равного 4,5 - PullRequest
1 голос
/ 18 марта 2019

Я пытаюсь ^[0-4][\.][0-5][0-9]*, но он также работает для чисел, подобных 4.56, и не соответствует числам, таким как 3.958

Ответы [ 2 ]

6 голосов
/ 18 марта 2019

Рассмотрим эту схему:

^(?:[0-3](?:\.[0-9]+)?|4(?:\.[0-4][0-9]*)?|4\.50*|-[0-9]+(?:\.[0-9]+)?)$
    ^^^                 ^^^                ^^^   ^^^
    0 to 3              4.0...4.4999...    4.5   any negative number

Это означает совпадение от 0 до 3, за которым следует любой необязательный десятичный компонент или 4, за которым следуют 0 до 4, затем любое другое число. Последняя часть чередования допускает любое отрицательное число.

Демо

Но, как говорится, гораздо более простой способ сделать это сравнение - использовать оператор неравенства в вашем языке программирования. Например, приведенное выше сложное регулярное выражение можно заменить в Java с помощью:

float f = 3.4f;
if (f <= 4.5f) {
    System.out.println("match");
}
0 голосов
/ 18 марта 2019

Попробуйте это:

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

DEMO

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