Регулярное выражение - Положительные числа с плавающей точкой с ограничениями по длине

Требуется валидировать число с плавающей точкой, с ограничением по длине до точки в 6 символов и после точки в 8 символов.

Также требуется отсекать кучу нолей вначале. Пропускать только если в начале один 0.

Пропускать целые числа. То есть точка и далее необязательно. Но если точки нету то длина не более 6 символов.

Пробовал вот такое:

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

Но не совсем подходит.

Числа, которые должны проходить, для примера:

  • 1
  • 0.00000001
  • 123456
  • 123456.12345678

И которые проходить не должны:

  • 000,1
  • 0
  • 00
  • 1234567
  • 0.123456789

Ответы (2 шт):

Автор решения: Евгений Платов
^(0\.(\d{0,8})|((?!0)\d{1,6})(\.\d{0,8})?)$
→ Ссылка
Автор решения: vp_arth

По сути, ваша регулярка почти готова. Только с квантификаторами запутались немного..

const r = /^(?:0(?!$)|[1-9]\d{0,5})(\.\d{1,8})?$/

const tests = [
  '1',
  '0.00000001',
  '123456',
  '123456.12345678',

  '000,1',
  '000.1',
  '0',
  '00',
  '1234567',
  '0.123456789',

// Не специфицированы:
  '1.00000000', // +
  '2.',         // -
  '.5',         // -
];

tests.forEach(test => {
  console.log(test, r.test(test));
});

→ Ссылка