Регулярное выражение, чтобы разрешить от 0 до 365 с десятичными знаками, но 365 должен иметь все десятичные цифры как только 0 - PullRequest
1 голос
/ 12 марта 2019

Я пытаюсь создать регулярное выражение, чтобы разрешить от 0 до 365 с необязательными десятичными знаками, но 365 должен иметь все необязательные десятичные цифры только как 0.

^(0?[0-9]?[0-9]|[1-2][0-9][0-9]|3[0-5][0-9])(\.\d+)|(36[0-5])(\.[0]+)?$

Это принимает только 365 и 365 с последующимдесятичные числа, подобные (365.0,365.00), но они принимают только с десятичным числом 1.0, 10.0.100.0 и не без десятичного числа 1.10100, не уверенный в том, что происходит.любая помощь будет оценена.

1 Ответ

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

Либо используйте (см. демо на regex101.com )

^(?:\d|[1-9]\d|[12]\d{2}|3[0-5]\d|36[0-4]|365\.0*)(?:\.\d+)?$

Или (лучше!):

^\d+(?:\.\d+)?$

и затем программно сравнить значения.
Последнее может быть:

let data = `0.00
123.2121212
365.00
365.11
-1000
299
1000
365.1`;

let regex = /^\d+(?:\.\d+)?$/gm;
while (found = regex.exec(data)) {
    number = parseFloat(found[0]);
    if (number >= 0 && number <= 365) {
        console.log(number + " (" + found[0] + ")");
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...