Регулярное выражение для чисел с плавающей запятой с двумя десятичными знаками в диапазоне 0-1 - PullRequest
0 голосов
/ 30 октября 2019

Я пытаюсь создать шаблон HTML / регулярное выражение, чтобы разрешить только числа с плавающей запятой от 0 до 1 с максимальными двумя десятичными знаками.

Итак, будет правильным следующее:

0
0.1
0.9
0.11
0.99
1

И это будет неверно:

00
0.111
0.999
1.1
2
10

Я не знаю о регулярных выражениях, не понимаю его синтаксис и не нашел ни одного онлайн-инструмента для создания регулярных выражений.

IПришло кое-что из того, что я собрал из онлайн-примеров:

^(0[0-1]|\d)(\.\d{1,2})?$

Я добавил 0[0-1], чтобы установить диапазон 0-1, но он не работает. Это регулярное выражение соответствует каждому числу от 0 до 9, которое также может иметь максимум 2 десятичных знака.

Ответы [ 2 ]

1 голос
/ 30 октября 2019

Если вам не легко с RegEx, вы можете использовать некоторый код, чтобы проверить, соответствует ли ввод вашим потребностям, например:

function ValidateNumber(num)
{
  const floatNumber = Number(num);

  return floatNumber != NaN && 0 <= floatNumber && floatNumber <= 1 && ('' + num).length <= 4;
}

const TestArray = [ '42', 42, 0, '0', '1', '1.00', '1.01', '0.01', '0.99', '0.111', 'zero' ]
TestArray.forEach(function(element) {
  console.log(element + ' is ' + (ValidateNumber(element) ? '' : 'not ') + 'a valid number');
});
1 голос
/ 30 октября 2019

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

^(?:0(?:\.\d{1,2})?|1(?:\.0{1,2})?)$
  • ^ Начало строки
  • (?: Группа без захвата
    • 0(?:\.\d{1,2})? Совпадение 0 и, необязательно, точка и 1-2 цифры
    • | Или
    • 1(?:\.0{1,2})? Совпадение 1 и, необязательно, точка и 1-2 ноля
  • ) Закрыть группу
  • $ Конец строки

Regex demo

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