Регулярное выражение - Положительные числа с плавающей точкой с ограничениями по длине
Требуется валидировать число с плавающей точкой, с ограничением по длине до точки в 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 шт):
Автор решения: 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));
});